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

如何在Bash中对圆点分隔的版本号执行末位减1操作

调整后实现方案

核心逻辑是先拆分点分版本号的前缀部分和末位数字段,对末位单独做减法后再拼接回完整版本号,可直接使用原生Bash语法实现,无需额外依赖外部工具:

#!/bin/bash

LATEST_RELEASE="myproduct_1.0.0.55"

# 提取纯版本号部分
RELEASE_NUMBER=`echo $LATEST_RELEASE | sed 's/[^0-9.]//g'`
echo "当前版本号: $RELEASE_NUMBER"

# 拆分版本号前缀和末位
VERSION_PREFIX=${RELEASE_NUMBER%.*}
LAST_SEGMENT=${RELEASE_NUMBER##*.}

# 末位减1后拼接
PREVIOUS_RELEASE="${VERSION_PREFIX}.$((LAST_SEGMENT - 1))"
echo "上一个版本号: $PREVIOUS_RELEASE"

逻辑说明

  • ${RELEASE_NUMBER%.*} 是Bash的参数扩展语法,作用是删除变量最后一个.以及之后的所有内容,得到版本号前缀(比如1.0.0.55处理后得到1.0.0)
  • ${RELEASE_NUMBER##*.} 作用是删除变量最后一个.以及之前的所有内容,得到版本号的末位数字(比如1.0.0.55处理后得到55)
  • 对末位做整数减法后拼接前缀即可得到目标版本号

边界提示

如果存在末位为0的版本号(如1.0.0.0),直接减1会得到负数,如有这类场景需要额外加逻辑处理退位规则,当前代码适配常规末位为正整数的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:45:03