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

How do I store the output of a git command in a variable?

我想要的是将 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)

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

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

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

  • 本例 128
  • 0 如果没有错误。

我强烈推荐这个而不是尝试检测字符串 "fatal: Not a git repository..."

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

另外还有一个 git 状态 --porcelain 和 --short 对脚本很有用。

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