正则表达式Bash匹配条件

时间:2018-06-08 08:16:45

标签: python regex shell if-statement

我希望匹配以下模式,然后在Jenkins中继续使用shell脚本。字符串应始终以CMR-和SP-开头,并应跟随4个数字,如下所示。我在匹配这种情况下遇到问题,对于0到9范围内的4个数字的数字。任何语言都可以。

所以我的目的就是这个。我想根据以下条件运行脚本。如果环境与生产中的xyz不匹配,并且与例如CMR-1234或SP-1234的票证ID不匹配,则脚本应退出并且不运行我的部署脚本。

有人可以帮帮我吗?

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

我刚刚修改了我的问题,以便更清晰。

1 个答案:

答案 0 :(得分:1)

试试这个,它使用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