如何提取命令的退出代码并在条件中使用它?例如,看看下面的脚本:
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
而不是command
as 。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
即,您可以多次计算涉及退出代码的表达式。