bash - Bash 中的逻辑运算符评估
问题描述
与 C 等编程语言相比,逻辑表达式在 Bash 中似乎以向后的方式求值。
例如, echo 成功后将返回 0 所以我希望:
echo hi || echo back4more
将打印hi
然后到标准输出,因为首先返回 0 并且需要back4more
检查第二条语句以确定整个逻辑 OR 表达式的真实性。但是,它只打印.hi
同样,这可以从以下方面看出:
echo hi && echo back4more
我希望打印出来hi
,就是这样,因为 echo 首先返回 0,因此 0 && (逻辑)总是错误的,所以不需要评估(逻辑)。但真正发生的是hi
并被back4more
打印出来。
为什么会这样?
解决方案
成功不是真理。
零退出状态意味着成功。非零退出状态意味着失败。
零算术值在逻辑上是布尔假。非零算术值是逻辑布尔真。
为什么会这样?
||
检查失败。因为echo
以0退出状态退出,表示成功,右边的||
不执行。
推荐阅读
- python - Databricks Koalas:使用for循环创建带有条件的新列,并根据旧列名动态命名新列
- swift - 警告:'UnsafeBufferPointer 的初始化
' 导致悬空缓冲区指针 - javascript - 如何根据删除重新排序索引
- amazon-web-services - pyodbc ProgrammingError:aws 实例上没有结果,但在本地机器上工作正常
- ruby-on-rails - 在rails上生成文件并上传回ruby
- java - 单击按钮时初始化方法引发运行时异常
- authentication - 没有浏览器导航的客户端启动注销
- tensorflow - 将 Pandas/Numpy 输入数据用于接受一维输入的 tensorflow hub 层
- pointers - 将指针分配给结构指针时,MCU进入Hardfault Handler
- php - 如何使用 cURL 发布数据?