使用 set -e 程序退出状态的一般解决方案

General solution for a program's exit status with set -e

我现在在 Bash 编程,我使用 set -e 因为在程序失败时继续脚本几乎不是想要的行为。

如果不需要退出代码,我会使用 ||true

如果我需要退出代码,我会像这样包装执行:

set +e
call_I_need_the_exit_code with few arguments
RV="$?"
set -e
# use "$RV" somewhat

然而,它很冗长,我很少切换 set +eset -e 引入恼人的错误。

有没有办法创建一个函数来执行命令并为退出代码设置一个已知变量?

类似这样的东西(伪代码):

safe_call( call_I_need_the_exit_code(with, few, arguments) )
# use "$RV" somewhat

其中 safe_call 基本上执行前一个代码块。这将使我的代码更易于编写和阅读...

|| true 起作用的原因是条件在 set -e 下是安全的。这可以很容易地扩展到您的场景。

command && rv=0 || rv=$?

顺便说一句,你应该avoid uppercase for your private variables.