我正在使用以下选项
set -o pipefail set -e
在bash脚本中停止执行错误。我有大约100行脚本正在执行,并且我不想检查脚本中每一行的返回码。
但是对于一个特定的命令,我想忽略该错误。我怎样才能做到这一点?
解决方案:
particular_script || true
例:
$ cat /tmp/1.sh particular_script() { false } set -e echo one particular_script || true echo two particular_script echo three $ bash /tmp/1.sh one two
three 将永远不会打印。
three
另外,我想补充一点,当pipefail打开时,如果管道中的命令之一具有非零退出代码(pipefail关闭该命令必须是最后一个),shell认为整个管道具有非零退出代码就足够了。
pipefail
$ set -o pipefail $ false | true ; echo $? 1 $ set +o pipefail $ false | true ; echo $? 0