Bash 为什么我的正则表达式匹配子字符串而不是完整字符串?
我有这个剧本:Bash 为什么我的正则表达式匹配子字符串而不是完整字符串?,bash,shell,Bash,Shell,我有这个剧本: #!/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退出 我想确保根据始终以字符串release开头的正则表达式来验
#!/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退出
我想确保根据始终以字符串release
开头的正则表达式来验证a
的值,并且在该正则表达式之后可以有任何其他字符、数字或特殊字符。但是,我在脚本中看到,如果a
在其值的任何位置包含字符串release
,脚本仍将其与正则表达式匹配,并在echo下打印值
如何在此处获取正则表达式?您需要锚定RE,以便仅在字符串开头匹配。您也不希望在结尾处出现
*
;它意味着匹配0个或更多的前一项,在本例中是e
[[ "$a" =~ ^release ]]
也可以使用全局模式而不是正则表达式:
[[ "$a" = release* ]]
您需要锚定RE,以便仅在字符串的开头匹配。您也不希望在结尾处出现
*
;它意味着匹配0个或更多的前一项,在本例中是e
[[ "$a" =~ ^release ]]
也可以使用全局模式而不是正则表达式:
[[ "$a" = release* ]]
我对Bash正则表达式的支持不是很熟悉,但post可能会有所帮助,并提供了一些其他最佳实践技巧 另外,您不需要插入符号来匹配字符串的开头吗?此外,任何后续字符都是句号星号(即句号为任何一个字符,星号为前一个字符的零或多个)
我对Bash正则表达式的支持不是很熟悉,但post可能会有所帮助,并提供了一些其他最佳实践技巧 另外,您不需要插入符号来匹配字符串的开头吗?此外,任何后续字符都是句号星号(即句号为任何一个字符,星号为前一个字符的零或多个)
谢谢,我实际上知道使用if[[“$a”==release*]]谢谢,我实际上知道使用if[[“$a”==release*]]