set -e;
command || EXIT_CODE=$? && true ;
echo $EXIT_CODE
45
在使用CLI工具时我一直在使用下面的代码段,我想知道是否存在某些资源,但我不关心输出 .
if [ -z "$(cat no_exist 2>&1 >/dev/null)" ]; then
echo "none exist actually exist!"
fi
1
解决方案:
particular_script || true
例:
$ cat /tmp/1.sh
particular_script()
{
false
}
set -e
echo ein
particular_script || true
echo zwei
particular_script
echo drei
$ bash /tmp/1.sh
ein
zwei
6 回答
只需在要忽略错误的命令后添加
|| true
即可 .如果您希望脚本在特定命令失败时不停止并且您还希望保存失败命令的错误代码,以防万一!
code
在使用CLI工具时我一直在使用下面的代码段,我想知道是否存在某些资源,但我不关心输出 .
解决方案:
例:
永远不会打印
drei
.另外,我想补充一点,当
pipefail
打开时,当管道中的一个命令具有非零退出代码时,shell认为整个管道具有非零退出代码就足够了(pipefail
关闭它必须是最后一个一) .您也可以使用"noop"或null实用程序(如POSIX specs中所述)
:
而不是"do nothing"而不是"returning true" . 你会节省几封信 . :)更简洁:
从POSIX specification关于
set -e
(强调我的):