有建议使用下面的选项,使猛砸快速失败:猛砸快速失效功能
set -o errexit
set -o nounset
set -o pipefail
这些选项但如预期的Bash函数,通过||
管道不起作用。
E.g.在脚本中
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
my_function() {
test -z "$1"
echo "this SHOULD NOT be printed"
}
my_function 1 || echo "???" # 1
my_function 1 # 2
echo "this will not be printed"
行# 2
将导致脚本以代码1结束而没有任何输出。这是我期望的。
行# 1
实际上让我困惑:my_function
将成功完成,打印“这个不应该被打印”并返回代码0,因此“???”将不会被打印。
如何让Bash在线# 1
处理my_function
同样失败的快速方式,如在线# 2
?
只是出于好奇,你在哪里看到这些东西推荐? –