在zsh中,如何对程序的退出状态进行条件限制?

时间:2010-02-01 21:49:56

标签: git zsh exit status

我想做类似的事情:

if [[ git status &> /dev/null ]]; then
   echo "is a git repo";
else
   echo "is not a git repo";
fi

除了我不知道如何检查退出状态。我该如何解决这个问题?

由于

3 个答案:

答案 0 :(得分:17)

就像那样

if git status &> /dev/null
then
   echo "is a git repo";
else
   echo "is not a git repo";
fi

或者以更紧凑的形式:

git status &> /dev/null && echo "is a git repo" || echo "is not a git repo"

答案 1 :(得分:11)

使用$?,它包含最后一个命令返回代码

编辑:精确的例子:

git status >& /dev/null
if [ $? -eq 0 ]; then
  echo "git status exited successfully"
else
  echo "git status exited with error code"
fi

答案 2 :(得分:0)

我经常使用的另一种形式如下:

git status &> /dev/null
if (( $? )) then
    ...

这比接受的答案稍微紧凑,但它并不要求你把命令放在与gregseth的答案相同的行上(有时你想要的,但有时候变得难以阅读)。

双括号用于zsh中的数学表达式。 (例如,请参阅here。)