*被展开,您可以使用sed而不是grep并立即获得分支的名称:
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
以及Noufal Ibrahim建议的使用git symbolic-ref的版本
branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
要详细说明扩展(如marco所做的那样),扩展是在回显中进行的,当您echo $test
使用包含“ * master”的$ test时,*将根据常规扩展规则进行扩展。为了抑制这种情况,必须引用该变量,如marco:所示echo "$test"
。另外,如果您在回显星号之前将其删除,则一切都会很好,例如,echo ${test:2}
仅回显“ master”。或者,您可以按照您已经提出的建议重新分配它:
branch=${test:2}
echo $branch
如您所愿,这将回显“ master”。