hzx*_*zxu 24 git bash shell grep
我需要使用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
Run Code Online (Sandbox Code Playgroud)
但问题是grep
命令找到分支名称而没有匹配确切的名称,也就是说,如果我grep name
随后使用名称进行分支branch-name
将匹配.
那么有更好的方法吗?
谢谢!
Hea*_*ath 47
注意:这总是返回true.这不是问题的正确答案,即使它已被接受....
你总是可以使用单词边界周围的名称,如\<
和\>
,而是让Git来完成的工作,为您提供:
if [ `git branch --list $branch_name` ]
then
echo "Branch name $branch_name already exists."
fi
Run Code Online (Sandbox Code Playgroud)
我喜欢Heath的解决方案,但是如果您仍然希望通过管道传递给grep,则可以使用类似于以下内容的正则表达式锚来排除与子字符串的匹配:
if [ `git branch | egrep "^[[:space:]]+${branchname}$"` ]
then
echo "Branch exists"
fi
Run Code Online (Sandbox Code Playgroud)
请注意,您需要使用space
字符类,因为命令的输出是缩进的。