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

时间:2015-01-28 06:41:20

标签: linux bash shell

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

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

我试过了:

var=$(git status)

但'var'没有存储任何内容。

2 个答案:

答案 0 :(得分:30)

您可以使用:

var=$(git status 2>&1)

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

否则,如果错误消息写在stderr并且您的命令:var=$(git status)仅捕获stdout

答案 1 :(得分:1)

该消息出现在标准错误上,默认情况下,$(cmd)仅捕获标准输出。您可以通过将标准错误重定向到标准输出来修复 - 请参阅其他答案之一。但是,您可以使用退出代码

  • 128 for this case
  • 0如果没有错误。

我强烈建议尝试检测字符串"致命:不是git存储库..."

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

另外还有一个git status --porcelain和--short,它们对脚本很有用。

如果您正在使用Linux / OS X等,则完整详细信息位于man git-status