bash - 如何在短路表达式中检索命令的返回码

标签 bash exit-code short-circuiting

在表达式之后:

command1 | command2

我可以通过 ${PIPESTATUS[0]} 检索第一个命令的退出状态

是否有以下形式的表达式的等价物:

command3 && command4 || command5

我想检索 command3 的退出代码:

command3 && command4 || command5
retval=${SHORTCIRCUIT[0]}     # how to get this value?

最好不要创建临时文件。

最佳答案

详细说明 devnull 的方法导致

{ c3=0; command3 || c3=$? && false; } && command4 || command5
echo $c3

. 因为每个 command 都可以替换为

{ c=0; command || c=$? && false; }

(前提是 c 在有条件执行时最初未设置),这很容易扩展。

关于bash - 如何在短路表达式中检索命令的返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17718655/

相关文章:

bash - 如何并行运行来自不同目录的 2 个或更多脚本

linux - 根据文件类型选择文件提取方法 - tar.bz2、tar.gz、tar.xz

bash - 从最后一个管道(stdin)获取退出代码

Java 三元(立即 if)求值

bash - 如何在 bash 脚本中处理文件名中的空格?

ios - sed : Insert lines after specific pattern with newline

c# - 在 C# 中测试 Environment.Exit()

c - 如果在C中退出(exitcode)会发生内存泄漏?

javascript - JS 中的短路在第一个输入时停止

c - () 的优先级最高,为什么会短路?