如何避免Shell脚本在特定命令失败时退出

8
以下脚本使用-e选项运行,如果其中任何命令失败,它将退出:
#!/bin/sh -e
command1 #script should fail if command1 fails
command2 #script should NOT fail if command2 fails
command3 #script should fail if command3 fails

如何使脚本在执行command2时不失败?

3个回答

16
command1
command2 || true
command3

6
您可以根据需要关闭此设置:
#!/bin/sh
set -e

command1 #script should fail if command1 fails

set +e
command2 #script should NOT fail if command2 fails
set -e

command3 #script should fail if command3 fails

2
在某些情况下可能有必要(例如,您需要根据command2的确切退出状态采取不同的操作)。 - chepner

1

如果您在shell中运行一个会退出的命令,可以通过在子shell中运行它来防止它退出:

(. script.sh)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接