代码之家  ›  专栏  ›  技术社区  ›  Conner M.

为什么如果[…某物…];那么echo“退出状态是$呢?“总是发射0?

  •  0
  • Conner M.  · 技术社区  · 6 年前

    在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。我不完全确定哪种出口代码适用于每种情况,但我认为这两个1都适用于这两种情况 this .我应该将1硬编码为条件语句还是更改逻辑以便Unix输出错误代码?另外,对于上面的例子,我得到的0将是什么命令的退出代码?

    1 回复  |  直到 6 年前
        1
  •  3
  •   glenn jackman    6 年前

    在这两种情况下,最后执行的命令是 [ 以0状态(“成功”)退出,将您置于“真”块。

    是的,您需要为 exit 命令。

    在学术上,“unix”不输出错误代码:运行脚本的shell以指定的状态退出。