Linux shell脚本set -e原理(set -o errexit 命令出错退出)(|| true屏蔽前面子命令返回值)(用if判断即使命令返回值不为零也不会退出)
在shell脚本中,set -e
或 set -o errexit
用于确保当任何命令以非零状态退出时,shell 脚本会立即退出。这是一种防御性编程手段,用以避免错误积累和传播。
当你在脚本的任何地方使用 set -e
时,只要有任何命令返回非零值,整个脚本就会立即退出。这是一个很好的实践,因为它可以防止错误的累积,特别是在处理重要的任务时。
解决方案:
- 使用
set -e
或set -o errexit
在脚本开始时立即开启这个选项。
#!/bin/bash
set -e
# 以下是你的脚本命令
- 如果你只想对一部分脚本使用
set -e
,可以在脚本中使用set +e
关闭这个选项,然后用set -e
重新开启。
#!/bin/bash
set -e
# 以下是你的脚本命令
set +e
# 这部分代码不会影响脚本退出状态
set -e
# 这部分代码会继续使用 set -e 规则
- 如果你想要忽略某个命令的退出状态,可以在命令后面加上
|| true
。
#!/bin/bash
set -e
# 以下是你的脚本命令
command || true
# 这个命令即使失败,脚本也不会退出
注意:在使用 set -e
或 set -o errexit
时要小心,因为有些命令,比如 grep
,它们在没有找到匹配项时会以非零状态退出,这可能不是你想要的结果。在这种情况下,你可能需要使用 set +e
或 set +o errexit
临时关闭这个选项。
评论已关闭