我正在尝试验证版本号是否与版本模式匹配,但是由于某些奇怪的原因,检查似乎失败了。
#!/bin/bash
VERSION="1.2.3"
if [[ $VERSION =~ ^(\d+\.)?(\d+\.)?(\*|\d+)$ ]]; then
echo "INFO:<-->Version $VERSION"
else
echo "ERROR:<->Unable to validate package version: '$VERSION'"
exit 1
fi
您应该在Bash中使用[0-9]
或[[:digit:]]
而不是\d
(因为Bash不支持该速记字符类),并且我建议在限制量词的帮助下缩短模式并将其放入变量中:
#!/bin/bash
VERSION="1.2.3"
rx='^([0-9]+\.){0,2}(\*|[0-9]+)$'
if [[ $VERSION =~ $rx ]]; then
echo "INFO:<-->Version $VERSION"
else
echo "ERROR:<->Unable to validate package version: '$VERSION'"
exit 1
fi
这些([0-9]+\.){0,2}
部分匹配1个或多个数字,后跟文字点0、1或2次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句