Regex 如何在Bash中测试变量是否为指定格式?
我的Bash脚本接受一个版本号的参数,格式如下:Regex 如何在Bash中测试变量是否为指定格式?,regex,bash,Regex,Bash,我的Bash脚本接受一个版本号的参数,格式如下:.\35;.\ 35;.\ 35;.dev或.\35;.\ 35;.prod,其中.可以是任何数字,例如:3.6.212.0.dev 我想验证参数的格式是否正确(包含由点分隔的所有4个数字,并在最后包括.prod或.dev) 我不确定如何实现这一点,到目前为止,我已经尝试过: re='^[0-9]+$' if ! [[ $1 =~ $re ]] ; then echo "error: Incorrect version specified
.\35;.\ 35;.\ 35;.dev
或.\35;.\ 35;.prod
,其中.
可以是任何数字,例如:3.6.212.0.dev
我想验证参数的格式是否正确(包含由点分隔的所有4个数字,并在最后包括.prod
或.dev
)
我不确定如何实现这一点,到目前为止,我已经尝试过:
re='^[0-9]+$'
if ! [[ $1 =~ $re ]] ; then
echo "error: Incorrect version specified; must be in the format of #.#.#.#.env" >&2; exit 1
fi
你可以用
re='^([0-9]+\){4}(开发产品)$'
如果![[“$1”=~$re]];然后
echo“错误:指定的版本不正确;格式必须为#.#.#.#.env”>&2;出口1
fi
见a
^([0-9]+\){4}(dev | prod)$
是符合POSIX ERE的模式,它匹配:
-字符串的开头^
-一个或多个数字和一个点出现四次([0-9]+\){4}
-(dev | prod)
或dev
子字符串prod
-字符串结束$