我需要使用shell脚本创建一个Git分支,但由于分支可能存在,我需要注意这一点。目前我正在使用:
if [ `git branch | grep $branch_name` ]
then
echo "Branch named $branch_name already exists"
else
echo "Branch named $branch_name does not exist"
fi
但问题是grep
命令找到分支名称而没有匹配确切的名称,也就是说,如果我grep name
那么将匹配名称为branch-name
的分支。
那么有更好的方法吗?
谢谢!
答案 0 :(得分:47)
注意:这总是返回true。这不是问题的正确答案,即使已被接受......
您可以随时使用\<
和\>
等名称旁边的字词边界,而是让Git为您完成工作:
if [ `git branch --list $branch_name` ]
then
echo "Branch name $branch_name already exists."
fi
答案 1 :(得分:4)
我喜欢Heath的解决方案,但是如果你仍想管道grep,你可以使用正则表达式锚点,类似于以下内容,以排除匹配子字符串:
if [ `git branch | egrep "^[[:space:]]+${branchname}$"` ]
then
echo "Branch exists"
fi
请注意,您需要使用space
字符类,因为命令的输出是缩进的。