Linux 如何将git命令的输出存储在变量中?

Linux 如何将git命令的输出存储在变量中?,linux,bash,shell,Linux,Bash,Shell,我想要的是将git命令的输出(例如git status)存储在shell脚本中的变量中。当我说输出时,我指的是终端在执行命令时返回的文本,例如: 在我的回购协议之外执行git状态时: fatal: Not a git repository (or any of the parent directories): .git 我试过这个: var=$(git status) 但是“var”没有存储任何内容。您可以使用: var=$(git status 2>&1) i、 e.将st

我想要的是将git命令的输出(例如git status)存储在shell脚本中的变量中。当我说输出时,我指的是终端在执行命令时返回的文本,例如: 在我的回购协议之外执行git状态时:

fatal: Not a git repository (or any of the parent directories): .git
我试过这个:

var=$(git status)
但是“var”没有存储任何内容。

您可以使用:

var=$(git status 2>&1)
i、 e.将stderr重定向到stdout,然后捕获输出


否则,当在
stderr
上写入for错误消息时,您的命令:
var=$(git status)
仅捕获
stdout
该消息在标准错误时显示,默认情况下,$(cmd)仅捕获标准输出。您可以通过将标准错误重定向到标准输出来修复-请参阅其他答案之一。但是,您可以使用退出代码

  • 这个案子有128人
  • 如果没有错误,则返回0
我强烈建议您不要尝试检测字符串“致命:不是git存储库…”

此外,还有一个git状态--Cellar和--short,这对脚本编写非常有用


如果您使用的是Linux/OS X等,则完整的详细信息在

中,示例输出可能会转到STDERR,而
var
将包含发送到STDOUT的内容。您可以使用
2>&1
将前者重定向到后者。谢谢,事实上输出到了STDERR。非常感谢!你能提供我可以研究的任何文档链接吗。(我会给你投票,但我的低回购不允许。)谢谢,这种使用退出代码的方法正是我所需要的。
foo=$(git status)
fatal: Not a git repository (or any of the parent directories): .git
echo $?
128