我有这个脚本:
#!/bin/bash
a=`git rev-parse --abbrev-ref HEAD`
echo $a
if [[ "$a" =~ release* ]]; then
echo "not valid branch allowed to be created"
exit 1
fi
我要达到的目标是,仅当a
的值以字符串release
开头时,脚本才应以状态1退出。
我想确保针对总是以字符串a
开头的正则表达式验证release
的值,之后可以有其他任何字符或数字或特殊字符。但是,我在脚本中看到,如果a
在其值的任何位置都包含字符串release
,该脚本仍将其与正则表达式匹配并在回显下打印该值。
如何在这里获取正则表达式?
答案 0 :(得分:2)
您需要锚定RE,使其仅在字符串的开头匹配。您也不希望结尾处的*
;这表示匹配0个或多个先前的内容,在这种情况下为e。
[[ "$a" =~ ^release ]]
您还可以使用全局模式代替正则表达式:
[[ "$a" = release* ]]
答案 1 :(得分:0)
我对Bash正则表达式的支持不是很熟悉,但是this帖子可能会有所帮助,并提供其他一些最佳实践提示。
在旁边,您是否不需要插入符号以匹配字符串的开头?另外,任何后续字符都是句号星号(即,period是任意一个字符,星号是前一个字符的零个或多个)。
^release.*