我想要的是将git命令的输出(例如git status)存储在shell脚本中的变量中。当我说输出时,我说的是在执行命令时在终端中返回的文本,例如: 在我的回购之外做一个git状态:
fatal: Not a git repository (or any of the parent directories): .git
我试过了:
var=$(git status)
但'var'没有存储任何内容。
答案 0 :(得分:30)
您可以使用:
var=$(git status 2>&1)
即。将stderr重定向到stdout然后捕获输出。
否则,如果错误消息写在stderr
并且您的命令:var=$(git status)
仅捕获stdout
。
答案 1 :(得分:1)
该消息出现在标准错误上,默认情况下,$(cmd)仅捕获标准输出。您可以通过将标准错误重定向到标准输出来修复 - 请参阅其他答案之一。但是,您可以使用退出代码
我强烈建议尝试检测字符串"致命:不是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