[英]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.