【发布时间】:2018-06-08 08:16:45
【问题描述】:
我希望匹配以下模式,然后在 Jenkins 中继续编写 shell 脚本。字符串应始终以 CMR- 和 SP- 开头,后跟 4 个数字,如下所示。我在将此案例与 0-9 范围内的 4 个数字匹配时遇到问题。任何语言都可以。
所以我的目的是这样的。我想根据以下条件运行脚本。如果环境与生产环境不匹配 xyz 并且与票证 ID 不匹配,例如 CMR-1234 或 SP-1234,则脚本应该退出并且不运行我的部署脚本。
有人可以帮帮我吗?
CMR-1256 和 SP-1278
我的 bash 表达式如下所示。
end () {
exit 1
}
echo $CMR
if [ ! `echo $CMR | grep -cE "^CMR-{0,9}|^SP-{0,9}" ` -gt 0 -a $environment == "xyz" ]
then
echo "None of the conditions met"
end
fi
我刚刚修改了我的问题以使其更加清晰。
【问题讨论】:
-
四位数模式是
[0-9]{4}(ERE 和 NFA)或[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 位数字,并且应该始终是一个数字。
标签: python regex shell if-statement