为什么当我使用echo $(git branch -vv)
时,它会在目录中显示文件列表,而不是分支列表?如何使用换行符在bash脚本中通过git branch -vv
解析sed
?
答案 0 :(得分:5)
典型的引用错误。
git branch命令的输出可能以标记当前活动分支的*
开头。像这样:
* foo 4d49722 Unfinished
master 4d49722 [origin/master: 1 ahead] Unfinished
如果没有引用,shell会将*
扩展为glob。 glob表达式*
表示当前文件夹中的所有文件或文件夹。
此外,新行会丢失,因为命令替换的结果会受到分词的影响。这意味着shell会将结果按tab
,newlines
或space
拆分,并将它们作为由空格分隔的单个参数传递给echo
。这意味着:
1
2
3
变为echo 1 2 3
。
解决方案是引用命令替换:
echo $(git branch -vv)
必须是:
echo "$(git branch -vv)"
你的第二个问题:
如何通过带有换行符的bash脚本中的sed解析git branch -vv?
很模糊。请更具体一点。