My Bash脚本接受版本号的参数,格式如下:#.#.#.#.dev
或#.#.#.#.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}(dev|prod)$'
if ! [[ "$1" =~ $re ]] ; then
echo "error: Incorrect version specified; must be in the format of #.#.#.#.env" >&2; exit 1
fi
在线观看Bash演示。
^([0-9]+.){4}(dev|prod)$
是符合POSIX ERE的模式,与匹配
^
-字符串的开头([0-9]+.){4}
-一个或多个数字和一个点出现四次(dev|prod)
-dev
或prod
子串$
—字符串结束