我需要使用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
命令在没有匹配确切名称的情况下查找分支名称,也就是说,如果Igrep name
,则名称为branch-name
的分支将匹配。
那么,有更好的方法吗?
谢谢!
注意:这总是返回true。这不是这个问题的正确答案,尽管它已经被接受了。。。。
你可以总是在名字周围使用单词边界,比如<
和>
,但让Git为你做这项工作:
if [ `git branch --list $branch_name` ]
then
echo "Branch name $branch_name already exists."
fi
我喜欢Heath的解决方案,但如果你仍然想通过管道传输到grep,你可以使用regex锚点,类似于以下内容,以排除匹配子字符串:
if [ `git branch | egrep "^[[:space:]]+${branchname}$"` ]
then
echo "Branch exists"
fi
请注意,您需要使用space
字符类,因为命令的输出是缩进的。