我想这样做:
if [[ git status &> /dev/null ]]; then
echo "is a git repo";
else
echo "is not a git repo";
fi
除了我不知道如何检查退出状态。我该如何解决?
谢谢
该变量$?
包含最后的命令返回码
编辑:精确的例子:
git status &> /dev/null
if [ $? -eq 0 ]; then
echo "git status exited successfully"
else
echo "git status exited with error code"
fi
就这么简单
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"
我经常使用的另一种形式如下:
git status &> /dev/null
if (( $? )) then
desired behavior for nonzero exit status
else
desired behavior for zero exit status
fi
这比接受的答案稍微紧凑,但它不需要您将命令放在与 gregseth 的答案相同的行上(这有时是您想要的,但有时会变得难以阅读)。
双括号用于 zsh 中的数学表达式。(例如,请参见此处。)
编辑:请注意,(( expression ))
语法遵循大多数编程语言的通常约定,即非零表达式计算为真,零计算为假。其他替代方案([ expression ]
、[[ expression ]]
、if expression
、test expression
等)遵循通常的 shell 约定,即 0(无错误)评估为真,非零值(错误)评估为假。因此,如果您使用此答案,则需要将if
andelse
子句从其他答案中切换。