Bash 中的逻辑运算符评估

时间:2021-07-28 07:12:54

标签: bash echo logical-operators

逻辑表达式在 Bash 中似乎以向后的方式计算,而不是像 C 这样的编程语言。

例如,echo 将在成功时返回 0,所以我期望:

echo hi || echo back4more

将打印 hi 然后将 back4more 打印到标准输出,因为首先返回 0 并且第二个语句需要被检查以确定整个逻辑 OR 表达式的真实性。但是,它只打印 hi

同样,这可以从:

echo hi && echo back4more

我希望打印 hi 就是这样,因为 echo 首先返回 0,因此 0 &&(逻辑)始终为假,因此无需评估(逻辑)。但真正发生的是 hiback4more 被打印出来。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

成功不是真理。

退出状态 表示成功。非零退出状态表示失败。

零算术值在逻辑上是布尔假。非零算术值在逻辑上为布尔真。

<块引用>

为什么会这样?

|| 检查失败。因为 echo 以 0 退出状态退出,表示成功,|| 的右侧不执行。