bash - 测试部分的 Bash 退出代码不应为 0
问题描述
为什么这个 bash 脚本返回退出代码 0?
$ if [ $NonExistent != "something" ]; then echo good; fi; echo $?
-bash: [: !=: unary operator expected
0
我试过把脚本放在一个文件中并添加
set -e
set -o pipefail
但它仍然返回 0。假设我不能修改这个脚本并且只能调用它,有没有办法我可以知道脚本失败了?
解决方案
它返回 0 因为
https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs
if
[...]
返回状态是最后执行的命令的退出状态,如果没有条件测试为 true ,则返回零。
至于知道脚本失败:“失败”到底是什么意思?它成功运行。
good
如果您想知道条件是否为真,您可以测试输出是否以开头。
推荐阅读
- express - Express-Gateway,如何根据 URL 模式选择服务端点?
- c - 如何删除文件路径的最后一部分
- bootstrap-4 - 如何在 Bootstrap 中将模态标题居中
- azure - 天蓝色条件访问在指定时间后注销
- swift - 用 0 附加到数组的问题
- cmd - 如何在 Windows 10 中使用 cmd 在一行中运行多个命令
- android - 有人可以向我指出为什么这段代码不起作用
- mongodb - 如何对文档中的数组元素进行排序(猫鼬)
- jwt - 使用 passport-jwt 和结语,我的 req.user 是空的
- javascript - 开玩笑不转换 CSS 文件导入语句