击。 Echo git branch -vv

时间:2017-08-07 10:00:54

标签: git bash parsing sed

为什么当我使用echo $(git branch -vv)时,它会在目录中显示文件列表,而不是分支列表?如何使用换行符在bash脚本中通过git branch -vv解析sed

1 个答案:

答案 0 :(得分:5)

典型的引用错误。

git branch命令的输出可能以标记当前活动分支的*开头。像这样:

* foo                              4d49722 Unfinished
  master                           4d49722 [origin/master: 1 ahead] Unfinished

如果没有引用,shell会将*扩展为glob。 glob表达式*表示当前文件夹中的所有文件或文件夹。

此外,新行会丢失,因为命令替换的结果会受到分词的影响。这意味着shell会将结果按tabnewlinesspace拆分,并将它们作为由空格分隔的单个参数传递给echo。这意味着:

 1
 2
 3

变为echo 1 2 3

解决方案是引用命令替换:

echo $(git branch -vv)

必须是:

echo "$(git branch -vv)"

你的第二个问题:

  

如何通过带有换行符的bash脚本中的sed解析git branch -vv?

很模糊。请更具体一点。