这实际上是一个非常常见的Bash陷阱。这
不是 错误。
returnNumber 0计算结果为true,因此也对第二个块(由逻辑和联接
&&)也进行了计算,以确保的结果
first &&second仍然为true。
第二个块输出,
OK但求值为假,因此现在的结果
first &&second为假。这意味着还必须对第三部分(由逻辑或相连
||)进行评估,并使其
NG显示出来。
而不是依赖于
&&和
||,您应该使用以下
if语句:
if returnNumber 0; then echo 'OK' returnNumber 1else echo 'NG'fi
tl; dr:
x && y || z在
y可以返回非零退出状态时不使用。



