*被扩展了,你可以做的是用sed代替grep,立即得到分支的名称。
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
还有一个使用git symbolic-ref的版本,正如Noufal Ibrahim建议的那样
branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
为了详细说明扩展,(正如Marco已经做的那样,)扩展发生在回声中。当你做echo $test
时,$test
包含* master
,那么*
会根据正常的扩展规则进行扩展。为了抑制这一点,我们必须引用这个变量,如marco所示。echo "$test"
。另外,如果你在回显之前把星号去掉,一切都会好起来的,例如:echo ${test:2}
将只回显master
。另外,你也可以按照你的建议重新分配它。
branch=${test:2}
echo $branch
这将呼应master
,如你所愿。