【发布时间】:2017-03-08 16:05:18
【问题描述】:
我有一个包含多个命令的 shell 脚本,如下所示
cmd-1
cmd-2
cmd-3
....
cmd-n
我希望 shell 脚本继续执行,即使中间出现故障,例如 cmd-3 或 cmd-7。为此,我使用了 set +e。这允许我继续执行,但我无法捕获失败命令的退出状态(因为脚本的退出状态始终基于最后一个命令)。有没有办法根据最后失败的命令设置完整脚本的状态。
【问题讨论】:
-
感谢 Joe & aliasav 提供上述链接。但是 set -e 和 '&&' 无法解决问题,因为它们会在发生错误时终止脚本。即使在失败的情况下,我也想继续到最后一个命令,但我想将完整脚本的退出状态设置为基于最后一个失败的命令的退出状态。类似于通过管道传输命令时设置 -o pipefail。在我的情况下,命令没有通过管道传输。
-
我不确定我是否明白表明未知进程失败的意义,尤其是当它没有严重到足以阻止剩余命令运行时。