You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell环境下如何简便校验x.y.z格式版本号的合规性?

Shell环境下版本号格式校验方法

当然有啦!在Shell环境里,我们可以借助正则表达式搭配常用工具,轻松搞定版本号的格式校验,完全匹配你提出的要求——版本号必须包含至少三个由点分隔的整数部分,后面带不带后缀(比如-7.1.0-7这种)都不影响合规性。

方法1:用grep快速校验

我们可以用扩展正则表达式匹配核心格式,只要版本号开头是数字.数字.数字的结构,就判定为合规(后续的后缀不影响)。

示例代码

# 替换成你要校验的版本号
VERSION="0.3.5-7.1.0-7"

# 执行校验
if echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+'; then
    echo "✅ 版本号格式合规"
else
    echo "❌ 版本号格式不合规"
fi

正则说明

  • ^:匹配字符串的起始位置,确保核心格式从开头开始
  • [0-9]+:匹配一个或多个数字(对应版本号的整数部分)
  • \.:转义后的点,匹配版本号里的分隔符
  • 整个正则^[0-9]+\.[0-9]+\.[0-9]+确保版本号至少包含三个由点分隔的整数部分,后续的内容会被忽略,完美适配你的需求。

方法2:用awk精准校验(确保整数部分合法)

如果需要更严格地确保前三个部分都是纯整数(避免出现1.2.a这种非数字部分),可以用awk按点分割字段后逐一校验。

示例代码

VERSION="0.89"

echo "$VERSION" | awk -F. '
    # 检查前三个字段是否都是纯数字
    $1 ~ /^[0-9]+$/ && $2 ~ /^[0-9]+$/ && $3 ~ /^[0-9]+$/ {
        print "✅ 版本号格式合规"
        exit 0
    }
    # 不符合条件时输出提示
    { print "❌ 版本号格式不合规"; exit 1 }
'

逻辑说明

  • -F.:指定用点作为字段分隔符
  • $1 ~ /^[0-9]+$/:判断第一个字段是否为纯整数,同理检查$2和$3
  • 只有三个字段都满足纯整数要求时,才判定为合规,能有效过滤包含非数字的版本号。

测试案例

你可以用以下案例验证两种方法:

  • 合规版本:
    • 0.3.5 → 输出合规
    • 0.3.5-7.1.0-7 → 输出合规
    • 123.456.789-beta → 输出合规
  • 不合规版本:
    • 0.89 → 仅两个整数部分,输出不合规
    • 1.2.a → 第三个部分非数字,输出不合规
    • v1.2.3 → 开头带字母,输出不合规(若需允许开头的v,可修改正则为^v?[0-9]+\.[0-9]+\.[0-9]+)

内容的提问来源于stack exchange,提问作者MelDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:36:22