当我运行带有-e
选项的bash脚本时,出现了一些对我来说没有意义的行为,该选项有多个与&&
一起串联的命令,其中一个命令失败。我希望脚本停止失败的命令并返回退出状态,但是它只是快乐地执行脚本的其余部分。为什么bash在短路命令的顺序中不能停止错误?
下面举例说明了意义,我:
$ 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
任何人都可以给这个解释?
这实际上很有意义。我知道'if'是这样工作的,但是我从未想到bash会以同样的方式处理&&。 – histumness 2013-02-12 20:18:22