Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 在zsh中,如何根据程序的退出状态进行条件设置?_Git_Zsh_Exit_Status - Fatal编程技术网

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谢谢,我忘了提那件事了。现在添加它。