如何将git命令的输出存储在variables中?

我想要的是将一个git命令的输出(如git status)存储在shell脚本中的一个variables中。 当我说输出时,我正在讨论在terminal执行某个命令时返回的文本,例如:在我的repo之外做一个git状态:

fatal: Not a git repository (or any of the parent directories): .git 

我试过这个:

 var=$(git status) 

但'var'没有存储任何东西。

Solutions Collecting From Web of "如何将git命令的输出存储在variables中?"

您可以使用:

 var=$(git status 2>&1) 

即将stderr重定向到stdout,然后捕获输出。

否则当错误消息写在stderr和你的命令时: var=$(git status)只捕获stdout

该消息出现在标准错误,默认$(cmd)只捕获标准。 您可以通过将标准错误重定向到标准来解决 – 请参阅其他答案之一。 但是,您可以使用退出代码

  • 128这个案例
  • 0如果没有错误。

我强烈推荐这个试图检测字符串“致命的:不是一个混帐存储库…”

 foo=$(git status) fatal: Not a git repository (or any of the parent directories): .git echo $? 128 

另外还有一个git状态 – 对于脚本来说很有用的–porn和–short。

如果你使用的是Linux / OS X等,完整的细节在man git-status