怎么解释这个bash行为?不要退出'&&'语句?
# bash -xe bash-4.1# trap 'echo ERROR' ERR + trap 'echo ERROR' ERR bash-4.1# false && true + false bash-4.1# false && false + false bash-4.1# false || true + false + true bash-4.1# false || false + false + false ++ echo ERROR ERROR
choroba.. 6
仔细阅读以下man bash
内容set -e
:
壳不退出如果失败的命令是紧跟在同时或直到关键字的命令列表的一部分,以下测试的一部分,如果或elif的保留字,在执行任何命令的一部分
&&
或||
列表以外的命令之后的决赛&&
或||
[...]
强调我的.
详细说明:当运行时false && false
,第一个false
使整个命令因短路而失败,并且因为它不是构造中的最后一个命令,所以它的退出状态被忽略.在以下情况下false || false
,第一个false
使第二false
它也将失败运行,但它的退出状态不会被忽略,因为它是在结构的最后一个命令.
仔细阅读以下man bash
内容set -e
:
壳不退出如果失败的命令是紧跟在同时或直到关键字的命令列表的一部分,以下测试的一部分,如果或elif的保留字,在执行任何命令的一部分
&&
或||
列表以外的命令之后的决赛&&
或||
[...]
强调我的.
详细说明:当运行时false && false
,第一个false
使整个命令因短路而失败,并且因为它不是构造中的最后一个命令,所以它的退出状态被忽略.在以下情况下false || false
,第一个false
使第二false
它也将失败运行,但它的退出状态不会被忽略,因为它是在结构的最后一个命令.