gpt4 book ai didi

bash - 如何获取倒数第二个命令的退出状态?

转载 作者:行者123 更新时间:2023-11-29 09:37:34 26 4
gpt4 key购买 nike

我想运行 2 个命令并输出第一个命令的退出状态。所有这一切,我想在一行命令中完成。像这样

cmd1; cmd2 && echo $?-1

它应该输出cmd1的退出状态。

最佳答案

与任何其他随时间更新其状态的全局变量一样(即 C 中的 errno),如果您想引用旧值,则需要提前存储它.

cmd1; cmd1_retval=$?; cmd2 && echo "$cmd1_retval"

顺便说一下,这里不同的地方是在管道中:

cmd1 | cmd2 | cmd3
echo "${PIPESTATUS[$(( ${#PIPESTATUS[@]} - 2 ))]}"

那是因为在管道中,所有组件同时运行,并且默认情况下退出状态是最后一个的退出状态。然而,在 bash 中,所有组件的退出状态都存储在 PIPESTATUS 数组中; ${#PIPESTATUS[@]} 获取此数组的长度,并从中减去两个(一个是因为基于 0 和 1 的索引之间的差异,另一个是从最后一项获取到倒数第二个项目)获取前面管道中的倒数第二个项目。

关于bash - 如何获取倒数第二个命令的退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44463170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com