Python 正则表达式Bash以匹配条件
我希望匹配以下模式,然后在Jenkins中继续编写shell脚本。字符串应始终以CMR-和SP-开头,后面应跟4个数字,如下所示。我在匹配0-9范围内的4个数字时遇到问题。任何语言都可以Python 正则表达式Bash以匹配条件,python,regex,shell,if-statement,Python,Regex,Shell,If Statement,我希望匹配以下模式,然后在Jenkins中继续编写shell脚本。字符串应始终以CMR-和SP-开头,后面应跟4个数字,如下所示。我在匹配0-9范围内的4个数字时遇到问题。任何语言都可以 所以我的目的就是这样。我想基于以下条件运行脚本。如果环境与生产环境xyz不匹配,并且与票据id(例如CMR-1234或SP-1234)不匹配,则脚本应退出,而不运行我的部署脚本 有人能帮我吗 CMR-1256和SP-1278 我的bash表达式如下所示 end(){ 出口1 } echo$CMR 如果[!`ec
所以我的目的就是这样。我想基于以下条件运行脚本。如果环境与生产环境xyz不匹配,并且与票据id(例如CMR-1234或SP-1234)不匹配,则脚本应退出,而不运行我的部署脚本 有人能帮我吗 CMR-1256和SP-1278 我的bash表达式如下所示
end(){
出口1
}
echo$CMR
如果[!`echo$CMR | grep-cE“^CMR-{0,9}”^SP-{0,9}”`-gt 0-a$environment==“xyz”]
然后
回应“未满足任何条件”
结束
fi
我只是修改了我的问题,让它更清晰。试试这个,它使用的是
bash
RE,而不是grep
:
#!/bin/bash
end () { exit 1; }
environment="xyz"
for CMR in CMR-1256 gash SP-1278
do
echo $CMR
if [[ ! $CMR =~ ^(CMR|SP)-[0-9]{4}$ ]] || [[ $environment != "xyz" ]]
then
echo "None of the conditions met in $CMR $environment"
#end
else
echo "$CMR matched $environment"
fi
done
给出:
CMR-1256
CMR-1256 matched xyz
gash
None of the conditions met in gash xyz
SP-1278
SP-1278 matched xyz
四位数字模式是
[0-9]{4}
(ERE和NFAs)或[0-9]{4\}
(BRE)。我不知道你要用什么。把它当作一个提示。谢谢你的提示。然而,它并没有像想象的那样工作。我使用了下面的grep条件grep-cE“^CMR-[0-9]{4}| ^SP-[0-9]{4}”,但我的脚本即使使用了CMR-123455也在继续。我希望它只限于CMR-5432(4个字符)。我也试过了其他的注释。这是的优先顺序吗代码>这就是问题所在?您能否澄清-a$environment==“xyz”
的目的?前面的代码>会将其更改为=代码>。顺便说一句,你评论中的RE与问题中的RE不同。那么,你想要4位数还是最多4位数?我的目的就是这样。我想基于以下条件运行脚本。如果环境与生产环境xyz不匹配,并且与票据id(例如CMR-1234或SP-1234)不匹配,则脚本应退出,而不运行我的部署脚本。@cdarke我的要求在CMR-或SP-之后正好是4位数字,并且应该始终是一个数字。很抱歉,这也不起作用。当我将5个数字与SP或CMR一起传递时,它仍在工作。end(){exit 1;}echo$CMR如果[[!$CMR=~^(CMR|SP)-[0-9]{4}]|[deployment|u environment!=“production”]]那么echo“在$CMR$environment中没有满足任何条件”end-else echo“$CMR matched$environment”fiOK,我会解决这个问题<代码>$
添加到RE末尾。