Bash:在错误期间失败,然后再运行另一个部分?

我想在脚本的一部分中运行一系列命令,如果返回非零退出状态,请停止。 而且, 在同一个脚本中 ,我希望最终的命令总是运行,不pipe之前是否有任何失败。

#!/usr/bin/env bash set -e ( # various commands go here ) &> /var/log/logfile final_command_that_always_runs /var/log/logfile 

这可能吗?

也许我可以为脚本的一个()部分设置-e?

Parens调用一个子shell,所以是的,你可以在其中设置选项,他们不会影响父shell。

从问题提问者编辑 :我已经标记为答案,但我认为它需要一个演示 – 答案说,我需要移动设置-e内parens:

 #!/usr/bin/env bash ( set -e echo 'one' ls -la /var/notexist/two echo 'three' ) &> /var/tmp/logfile cp /var/tmp/logfile /var/tmp/logfile2