猿问

重击忽略特定命令的错误

我正在使用以下选项


set -o pipefail

set -e

在bash脚本中,由于错误而停止执行。我有大约100行脚本正在执行,并且我不想检查脚本中每一行的返回码。


但是对于一个特定的命令,我想忽略该错误。我怎样才能做到这一点?


翻过高山走不出你
浏览 476回答 3
3回答

开心每一天1111

解决方案:particular_script || true例:$ cat /tmp/1.shparticular_script(){    false}set -eecho oneparticular_script || trueecho twoparticular_scriptecho three$ bash /tmp/1.shonetwothree 将永远不会打印。另外,我想补充一点,当pipefail打开时,如果管道中的命令之一具有非零退出代码(pipefail关闭该命令必须是最后一个),shell认为整个管道具有非零退出代码就足够了。$ set -o pipefail$ false | true ; echo $?1$ set +o pipefail$ false | true ; echo $?0

汪汪一只猫

不要停止并保存退出状态万一您希望脚本在特定命令失败时不停止,并且还希望保存失败命令的错误代码,以防万一:set -eEXIT_CODE=0command || EXIT_CODE=$?echo $EXIT_CODE

DIEA

更简洁地说:! particular_script从POSIX规范中set -e(重点是):启用此选项时,如果简单命令由于“ Shell错误的后果”中列出的任何原因而失败,或者返回退出状态值> 0,并且在一段时间,直到或if关键字之后,则不属于复合列表的一部分,并且不是AND或OR列表的一部分,也不是前面带有!的管道。保留字,然后外壳应立即退出。
随时随地看视频慕课网APP
我要回答