some_script.sh || 是什么意思? “消息”在bash脚本中意味着什么?

some_script.sh || 是什么意思? “消息”在bash脚本中意味着什么?

bash 脚本中的以下行:

$GEN_SDK $GEN_SDK_FLAGS $OUT_DIR/toolchain || panic "Cannot generate SDK toolchain!"

执行时会崩溃。我相信这一行的逻辑是,如果第一个命令运行正常,则不会评估第二个命令。但是第一个命令运行正常意味着什么?return true在 bash 中没有这样的事情。那么它如何知道它没有运行正常?

答案1

在 shell 中,所有进程都有退出代码(或返回代码)。退出代码0是“真实的”,因为它指示没有发生错误(这与人们通常在编程语言中所期望的通常是0“虚假的”相反)。如果 的退出代码不是,则bash 结构command || othercommand将执行。这与当且仅当退出代码为othercommandcommand0command && othercommandothercommandcommand 0

如果您想尝试一下,shell 扩展$?将计算为上一个命令的退出代码:

$ true; echo $?
0
$ false; echo $?
1
$ true || echo "Darned true."
$ false || echo "Lies."
Lies.

相关内容