当我使用选项运行 bash 脚本时,我看到一些对我没有意义的行为,该-e
选项具有多个与&&
s 串在一起的命令并且其中一个失败。我希望脚本在失败的命令上停止并返回退出状态,但它只是愉快地执行脚本的其余部分。
以下是对我有意义的示例:
$ false && true; echo $?
1
$ bash -xe -c "false && true"; echo $?
+ false
1
$ bash -xe -c "false; true"; echo $?
+ false
1
这对我来说没有意义:
$ bash -xe -c "false && true; true"; echo $?
+ false
+ true
0
这是我不明白发生了什么的地方。false && true
返回状态 1,所以脚本不应该停止执行并返回状态 1,就像脚本是时一样false; true
?
在试验过程中,我发现如果我用括号括住命令链,它的工作方式与我期望的一样:
$ bash -xe -c "(false && true); true"; echo $?
+ false
1
任何人都可以对此做出解释吗?