击.Echo git branch -vv

Her*_*ott 0 git bash parsing sed

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

hek*_*mgl 5

典型的引用错误.

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

* foo                              4d49722 Unfinished
  master                           4d49722 [origin/master: 1 ahead] Unfinished
Run Code Online (Sandbox Code Playgroud)

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

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

 1
 2
 3
Run Code Online (Sandbox Code Playgroud)

成为echo 1 2 3.

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

echo $(git branch -vv)
Run Code Online (Sandbox Code Playgroud)

一定是:

echo "$(git branch -vv)"
Run Code Online (Sandbox Code Playgroud)

你的第二个问题:

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

很模糊 请更具体一点.