繁体   English   中英

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

[英]How do I check for an error in bash with -e

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

我的大多数命令都需要-e ,但是不需要。

set -e
foo
bar

biz
if [ ! $? -e 0 ]
   echo oh noes
fi

$? 显然是行不通的。

做这个的最好方式是什么?

在(4.1) bash手册页中-e选项:

如果失败的命令是在一会儿或直到关键字之后紧随其后的命令列表的一部分,在if或elif保留字之后的测试的一部分,在&&或││列表中执行的任何命令的一部分(除了在最后的&&或││之后的命令

biz || echo "oh noes"

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

您还可以按照Etan的建议,使用if语句运行命令:

if ! biz; then
    echo "oh noes"
fi

您还可以暂时暂时关闭-e

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

将命令内联到if检查中。

if ! biz; then
    echo oh noes
fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM