我有一个包含多个命令的shell脚本,如下所示
cmd-1
cmd-2
cmd-3
....
cmd-n
即使中间出现故障,例如cmd-3或cmd-7,我也希望shell脚本继续执行。为实现这一点,我使用了set + e。这允许我继续执行,但是我无法捕获失败命令的退出状态(因为脚本的退出状态始终基于最后一个命令)。有没有办法根据上次失败的命令设置完整脚本的状态。
答案 0 :(得分:1)
你可以像那样实现它。不太干净,但很容易。
exit_code=0
cmd-1 || exit_code=$?
cmd-2 || exit_code=$?
cmd-3 || exit_code=$?
....
cmd-n || exit_code=$?
exit $exit_code
干净的方法是将代码拆分为函数并检查命令的结果。