我想知道在if语句中检查退出状态的最佳方法是什么,以便响应特定的输出。
我想的是:
if [ $? -eq 1 ]
then
echo "blah blah blah"
fi
我还面临的问题是,Exit语句位于if语句之前,它必须有退出代码,如何解决?
发布于 2018-08-02 14:44:34
每个运行的命令具有退出状态。
该检查正在查看该命令的退出状态,该命令是在该行运行之前最近完成的。
如果你想你的当测试返回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
如果你只关心特定的错误代码,那么你需要检查手动$?
。
发布于 2018-08-02 16:09:22
请注意,exit codes != 0被用于报告错误。所以,最好这样做:
retVal=$?
if [ $retVal -ne 0 ]; then
echo "Error"
fi
exit $retVal
而不是:
# will fail for error codes > 1
retVal=$?
if [ $retVal -eq 1 ]; then
echo "Error"
fi
exit $retVal
https://stackoverflow.com/questions/-100001880
复制相似问题