我想知道在if语句中检查退出状态以回显特定输出的最佳方法是什么。Bash - 如何使用if语句检查退出状态
我想这是
if [ $? -eq 1 ]
then
echo "blah blah blah"
fi
我也有这个问题的是,出口语句是之前的if语句,只是因为它必须有一个退出代码,我知道我在做什么因为出口沃尔明显会退出该计划。
我想知道在if语句中检查退出状态以回显特定输出的最佳方法是什么。Bash - 如何使用if语句检查退出状态
我想这是
if [ $? -eq 1 ]
then
echo "blah blah blah"
fi
我也有这个问题的是,出口语句是之前的if语句,只是因为它必须有一个退出代码,我知道我在做什么因为出口沃尔明显会退出该计划。
每个运行的命令都有退出状态。
该检查查看在该行运行之前最近完成的命令的退出状态。
如果你想你的脚本来当测试返回true退出(以前的命令失败),那么你把exit 1
(或其他)是if
块内的echo
后。
这就是说,如果你正在运行命令,并希望测试其输出使用以下往往更直截了当。
if some_command; then
echo command returned true
else
echo command returned some error
fi
或打开,大约用!
为否定
if ! some_command; then
echo command returned some error
else
echo command returned true
fi
不过请注意,无论是那些关心什么错误代码是的。如果你知道你只关心特定的错误代码,那么你需要手动检查$?
。
$?
是一个像其他任何参数。在最终致电exit
之前,您可以保存其使用价值。
exit_status=$?
if [ $exit_status -eq 1 ]; then
echo "blah blah blah"
fi
exit $exit_status
tail /var/log/XXX.log | grep 'to be found' && echo found
注意退出代码!= 0用于报告错误。所以,这是更好地做:的
retVal=$?
if [ ! $? -eq 0 ]; then
echo "Error"
fi
exit $retVal
代替
# will fail for error codes > 1
retVal=$?
if [ $? -eq 1 ]; then
echo "Error"
fi
exit $retVal
Plaese发表您的完整的脚本(或至少是一个更广泛的范围内)。否则这看起来很好。 – RedX 2014-10-31 13:21:49
如果您需要在两个不同的地方使用某个特定程序调用的退出代码,那么您需要保留它 - 沿着'some_program; RC = $ ?;如果[$ {rc} -eq 1] .... fi;退出$ {rc}' – twalberg 2014-10-31 14:37:11