测试部分的Bash退出代码不应为0

时间:2018-06-10 21:09:24

标签: bash

为什么此bash脚本返回退出代码0?

$ if [ $NonExistent != "something" ]; then echo good; fi; echo $?
-bash: [: !=: unary operator expected
0

我已尝试将脚本放入文件并添加

set -e
set -o pipefail

但它仍然返回0.假设我无法修改此脚本并且只能调用它,有没有办法让我知道脚本失败了?

1 个答案:

答案 0 :(得分:3)

因为

而返回0

https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs

  

if

     

[...]

     

返回状态是执行的最后一个命令的退出状态,如果没有条件测试为真,则

至于知道脚本失败了:“失败”究竟是什么意思?它成功运行。

如果您想知道条件是否为真,您可以测试输出是否以good开头。