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

int*_*ore 9 bash exit-status

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

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

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

Kus*_*nda 20

if [ "$i" -eq 4 ] && command1; then
   echo 'All is well'
else
   echo 'i is not 4, or command1 returned non-zero'
fi
Run Code Online (Sandbox Code Playgroud)

随着$(command) -eq 0(在你的代码)你测试输出command,而不是它的退出代码。

注意:我使用了标准实用程序的名称command1而不是command原样command


ilk*_*chu 9

$(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
Run Code Online (Sandbox Code Playgroud)