为什么此bash脚本返回退出代码0?
$ if [ $NonExistent != "something" ]; then echo good; fi; echo $?
-bash: [: !=: unary operator expected
0
我已尝试将脚本放入文件并添加
set -e
set -o pipefail
但它仍然返回0.假设我无法修改此脚本并且只能调用它,有没有办法让我知道脚本失败了?
答案 0 :(得分:3)
因为
而返回0https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs
if
[...]
返回状态是执行的最后一个命令的退出状态,如果没有条件测试为真,则零。
至于知道脚本失败了:“失败”究竟是什么意思?它成功运行。
如果您想知道条件是否为真,您可以测试输出是否以good
开头。