如何使用-e检查bash中的错误

如何使用-e检查bash中的错误,bash,error-handling,Bash,Error Handling,当设置了-e时,如何有选择地检查行中是否有错误(并且没有失败) 我的大多数命令都需要-e,但有一个命令不需要 set -e foo bar biz if [ ! $? -e 0 ] echo oh noes fi $?显然不起作用 执行此操作的最佳方法是什么?将运行的命令内联到if检查中 if ! biz; then echo oh noes fi 将运行的命令内联到if检查中 if ! biz; then echo oh noes fi 从-e选项的(4.1)ba

当设置了
-e
时,如何有选择地检查行中是否有错误(并且没有失败)

我的大多数命令都需要
-e
,但有一个命令不需要

set -e
foo
bar

biz
if [ ! $? -e 0 ]
   echo oh noes
fi
$?
显然不起作用


执行此操作的最佳方法是什么?

将运行的命令内联到
if
检查中

if ! biz; then
    echo oh noes
fi

将运行的命令内联到
if
检查中

if ! biz; then
    echo oh noes
fi
-e
选项的(4.1)
bash
手册页:

如果失败的命令是命令的一部分,则shell不会退出 while或until关键字后面的命令列表,if或elif保留字后面的测试的一部分,在中执行的任何命令的一部分 a&&或││ 除最后一个&&or后面的命令外,列出││

只有当
biz
失败时,
|
的RHS才会执行,并且
echo
保证以状态0退出,因此它不会导致脚本失败

您还可以使用
if
语句运行该命令,如Etan所建议的:

if ! biz; then
    echo "oh noes"
fi
您也可以简单地暂时关闭
-e

set +e
biz
if [ $? -ne 0 ]; then
   echo oh noes
fi
set -e
-e
选项的(4.1)
bash
手册页:

如果失败的命令是命令的一部分,则shell不会退出 while或until关键字后面的命令列表,if或elif保留字后面的测试的一部分,在中执行的任何命令的一部分 a&&或││ 除最后一个&&or后面的命令外,列出││

只有当
biz
失败时,
|
的RHS才会执行,并且
echo
保证以状态0退出,因此它不会导致脚本失败

您还可以使用
if
语句运行该命令,如Etan所建议的:

if ! biz; then
    echo "oh noes"
fi
您也可以简单地暂时关闭
-e

set +e
biz
if [ $? -ne 0 ]; then
   echo oh noes
fi
set -e