如何提取命令的退出代码?

如何提取命令的退出代码?

如何提取命令的退出代码并在条件中使用它?例如,看看下面的脚本:

i=4
if [[ $i -eq 4 && $(command) -eq 0 ]]
    then
            echo "OK"
    else
            echo "KO"
    fi

如果两个条件都满足,脚本应该做一些事情。在第二种情况下,我需要检查退出状态(而不是上面给出的脚本中的命令输出),以了解命令是否成功。

答案1

if [ "$i" -eq 4 ] && command1; then
   echo 'All is well'
else
   echo 'i is not 4, or command1 returned non-zero'
fi

使用$(command) -eq 0(如您的代码中所示)您测试输出command不是它的退出代码。

注意:我使用的是标准实用程序的名称,command1而不是commandas 。command

答案2

$(somecmd)会捕获 的输出somecmd,如果你想检查命令的退出代码,只需将其if直接放在语句的条件部分

i=4
if [[ $i -eq 4 ]] && false ; then
     echo this will not print
fi
if [[ $i -eq 4 ]] && true ; then
     echo this will print
fi

答案3

要捕获退出代码,请使用 $?在执行该命令之后(立即,在执行任何其他命令之前)。然后你可以做类似的事情

ls /proc/$PPID/fd
ls=$?
if test $ls != 0; then
  echo "foo failed"
  if test $ls = 2; then
    echo "  quite badly at that"
  fi
fi

即,您可以多次计算涉及退出代码的表达式。

相关内容