为什么 if [ ...something... ];那么 echo "Exit status is $?" 总是发出 0?
Why does if [ ...something... ]; then echo "Exit status is $?" always emit 0?
在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
但是这些 return 退出状态为 0。我什至不完全确定哪种退出代码适用于每种情况,但我认为基于 this。我应该将 1 硬编码到条件语句中还是更改逻辑以便 unix 输出错误代码?另外,我在上面的示例中得到的 0 是什么命令的退出代码?
在这两种情况下,最后执行的命令是 [
,它以 0 状态 ("success") 退出,使您进入 "true" 块。
是的,您需要为 exit
命令指定一个非零退出代码。
迂腐地 "unix" 不输出错误代码:shell 运行 您的脚本以指定的状态退出。
在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
但是这些 return 退出状态为 0。我什至不完全确定哪种退出代码适用于每种情况,但我认为基于 this。我应该将 1 硬编码到条件语句中还是更改逻辑以便 unix 输出错误代码?另外,我在上面的示例中得到的 0 是什么命令的退出代码?
在这两种情况下,最后执行的命令是 [
,它以 0 状态 ("success") 退出,使您进入 "true" 块。
是的,您需要为 exit
命令指定一个非零退出代码。
迂腐地 "unix" 不输出错误代码:shell 运行 您的脚本以指定的状态退出。