如何使用-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