Git 在zsh中,如何根据程序的退出状态进行条件设置?
我想做一些事情,比如:Git 在zsh中,如何根据程序的退出状态进行条件设置?,git,zsh,exit,status,Git,Zsh,Exit,Status,我想做一些事情,比如: 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 exit
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中的数学表达式。(例如,请参见。)
编辑:请注意,
((表达式))
语法遵循大多数编程语言的常规,即非零表达式的计算结果为true,零表达式的计算结果为false。其他备选方案([expression]
,[[expression]]
,if expression
,test expression
等)遵循通常的shell约定,即0(无错误)计算为真,非零值(错误)计算为假。因此,如果你使用这个答案,你需要将if
和else
从句从其他答案中切换出来。哦,对了,忘了,>&有时会起作用,这取决于语法有多模棱两可——不过这是一个坏习惯,最好使用不模棱两可的&>。抱歉。我要说清楚,git status
可以返回非零退出代码,原因比没有git回购要多得多。当然。这个答案试图解决OP关于返回代码的zsh问题,我完全同意git的相关性是最小的。也许我会编辑它。实际上,算术计算中的变量不需要$
。请参阅:“var
(不需要前面的$
,除非需要一些替换,例如${var}
,$
如果要修改var
,则是错误的)”请注意,这与上述答案具有相反的效果,如果返回代码非零,它将进入if块,如果是的话,进入else块zero@kevin.groat谢谢,我忘了提那件事了。现在添加它。