在bash中输出退出状态的正确方法是什么?据我所知,$?
调用的退出状态对应于最后执行的命令的状态。
正在处理的脚本对作为参数输入的文件进行了一些条件检查,例如,检查是否对所有文件进行了命名或是否存在文件。
所以我有这样的条件语句:
if [ $# -eq 0 ] ; then
echo "No file name(s) given! \nExit status=$?"
exit
if [ ! -e "$fName" ] ; then
echo "$fName does not exist! \nExit status=$?"
exit
但是它们返回的退出状态为0。我甚至不能完全确定哪种退出代码适用于每种情况,但是我认为基于this两者都适用。我应该只将1硬编码到条件语句中还是更改逻辑,以便Unix输出错误代码?另外,我在上面的示例中获得的0将是哪个命令的退出代码?
答案 0 :(得分:3)
在这两种情况下,最后执行的命令是[
,它以0状态(“成功”)退出以使您进入“ true”块。
是的,您需要为exit
命令指定一个非零的退出代码。
通常,“ unix”不会输出错误代码:运行您的脚本的外壳会以指定状态退出。