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

如何通过Shell脚本递增文件XYZ中的API版本号

实现Shell脚本自动递增API版本号

没问题,我来帮你搞定这个自动递增版本号的需求!下面是一个实用的Shell脚本,能每次运行时自动更新XYZ文件里的API版本号,从0.0.1-LINEAGE依次递增到1.0.0-LINEAGE,还支持版本号的进位逻辑(比如0.0.9之后会变成0.1.0,直到1.0.0)。

完整脚本

#!/bin/bash

# 指定目标文件路径
TARGET_FILE="XYZ"

# 从文件中提取当前版本号(匹配类似0.0.1的数字部分)
current_version=$(grep -oP '(?<=image: website/api:)\d+\.\d+\.\d+' "$TARGET_FILE")

# 检查是否成功提取版本号
if [ -z "$current_version" ]; then
    echo "❌ 错误:在文件$TARGET_FILE中未找到符合格式的版本号"
    exit 1
fi

# 拆分版本号为主版本、次版本、修订号
IFS='.' read -r major minor patch <<< "$current_version"

# 递增修订号
patch=$((patch + 1))

# 处理版本进位逻辑(修订号满10进次版本,次版本满10进主版本)
if [ "$patch" -ge 10 ]; then
    patch=0
    minor=$((minor + 1))
    if [ "$minor" -ge 10 ]; then
        minor=0
        major=$((major + 1))
    fi
fi

# 生成新版本号
new_version="$major.$minor.$patch"

# 检查是否到达目标版本1.0.0
if [ "$new_version" = "1.0.0" ]; then
    echo "🎉 已到达目标版本:$new_version-LINEAGE,后续运行将不再递增"
fi

# 替换文件中的旧版本号(Linux/macOS兼容写法)
if [[ "$OSTYPE" == "darwin"* ]]; then
    # macOS系统需要给sed的-i参数加空字符串
    sed -i '' "s/image: website/api:$current_version-LINEAGE/image: website/api:$new_version-LINEAGE/" "$TARGET_FILE"
else
    # Linux系统直接使用sed -i
    sed -i "s/image: website/api:$current_version-LINEAGE/image: website/api:$new_version-LINEAGE/" "$TARGET_FILE"
fi

echo "✅ 版本更新完成:$current_version-LINEAGE → $new_version-LINEAGE"

脚本说明

  • 提取版本号:用grep的正则正向预查,精准匹配image: website/api:后面的数字版本部分,避免误改其他内容。
  • 版本拆分与递增:把版本号拆成三个独立部分,先递增修订号,再处理进位(比如0.0.9→0.1.0,0.9.9→1.0.0)。
  • 跨系统兼容:针对Linux和macOS的sed命令差异做了适配,不用额外修改就能在不同系统运行。
  • 目标版本判断:当版本到达1.0.0时会给出提示,后续运行仍会执行但不会再递增(如果需要到达后直接退出,可以在echo "🎉..."后面加exit 0)。

使用步骤

  1. 把上面的脚本保存为update_version.sh。
  2. 给脚本添加执行权限:chmod +x update_version.sh。
  3. 每次需要更新版本时,运行脚本:./update_version.sh。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:05:12