如何在Bash中测试变量是否为指定格式



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)-devprod子串
  • $—字符串结束

相关内容

  • 没有找到相关文章