典型的引用错误.
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?
很模糊 请更具体一点.