【发布时间】:2021-09-01 14:05:51
【问题描述】:
我有一个 bash 脚本,它运行一些在某些用例上返回错误代码 137 的工具。 我将此脚本用作我的 CI 管道的一部分,就我而言,这是成功的状态。 我的问题是如何捕获此退出代码并返回 0 的退出代码(如陷阱命令,仅我认为它不支持自定义退出代码,仅支持预定义的退出代码)。
提前致谢, 阿隆
【问题讨论】:
我有一个 bash 脚本,它运行一些在某些用例上返回错误代码 137 的工具。 我将此脚本用作我的 CI 管道的一部分,就我而言,这是成功的状态。 我的问题是如何捕获此退出代码并返回 0 的退出代码(如陷阱命令,仅我认为它不支持自定义退出代码,仅支持预定义的退出代码)。
提前致谢, 阿隆
【问题讨论】:
在脚本中运行命令/工具后:
command
您可以查看退出代码并根据该返回执行一些逻辑:
command
return=$?
if [ $return -eq 137 ]; then
exit 0
else # @chepner's very good suggestion
exit $return
fi
如果您运行的命令(您的工具)返回的退出代码为 137,那么您的 bash 脚本将以退出代码 0 结束。
【讨论】:
else 子句中有明确的exit $return。否则,之前脚本的退出状态是由command 的退出状态隐式设置的,现在退出状态将是if 的退出状态。
set -e。
set -e的部分答案:stackoverflow.com/questions/26675681/…
set +e 以暂时禁用此脚本中的 set -e,然后从主脚本调用此包装脚本,而不是真正的命令。