首页 > 解决方案 > Bash 中的逻辑运算符评估

问题描述

与 C 等编程语言相比,逻辑表达式在 Bash 中似乎以向后的方式求值。

例如, echo 成功后将返回 0 所以我希望:

echo hi || echo back4more

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

同样,这可以从以下方面看出:

echo hi && echo back4more

我希望打印出来hi,就是这样,因为 echo 首先返回 0,因此 0 && (逻辑)总是错误的,所以不需要评估(逻辑)。但真正发生的是hi并被back4more打印出来。

为什么会这样?

标签: bashechological-operators

解决方案


成功不是真理。

退出状态意味着成功。非零退出状态意味着失败。

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

为什么会这样?

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


推荐阅读