Skip to content
On this page

计算升级版本号

  • 根据当前的版本号计算升级版本后的号,支持自定义版本号

效果如下:

version

shell
current_version="5.0.0"
echo "当前的版本为【${current_version}"
# 计算要升级的版本号
# 分割当前版本号为主版本、次版本和修订版本
IFS='.' read -ra version_parts <<< "$current_version"

major_version="${version_parts[0]}"
minor_version="${version_parts[1]}"
patch_version="${version_parts[2]}"

# 计算下一个可能版本
next_major_version="$((major_version+1)).${minor_version}.${patch_version}"
next_minor_version="${major_version}.$((minor_version+1)).${patch_version}"
next_patch_version="${major_version}.${minor_version}.$((patch_version+1))"
# echo "${next_major_version}-${next_minor_version}-${next_patch_version}"

# 让用户选择一个版本号
# 默认选择next_patch_version
selected_version=${next_patch_version}
# 询问用户选择的函数
function ask_version() {
  echo "请选择一个版本:"
  select version in "major(${next_major_version})" "minor(${next_minor_version})" "patch(${next_patch_version})" "自定义版本" "退出"; do
    case $version in
      "major(${next_major_version})")
        selected_version="${next_major_version}"
        break
        ;;
      "minor(${next_minor_version})")
        selected_version="${next_minor_version}"
        break
        ;;
      "patch(${next_patch_version})")
        selected_version="${next_patch_version}"
        break
        ;;
      "自定义版本")
        read -p "请输入自定义版本: " custom_version
        selected_version="${custom_version}"
        break
        ;;
      "退出")
        exit
        ;;
      *)
        echo "无效的选项,请重新选择."
        ;;
    esac
  done
}

# 调用函数询问用户选择
ask_version
echo "升级后的版本号为【${selected_version}"

shell语句备注

shell
IFS='.' read -ra version_parts <<< "$current_version"
  • 首先,将IFS设置为.,这意味着Shell将使用.作为字段分隔符,用于将字符串分割成多个部分;

  • 然后,使用read命令结合<<<操作符,将字符串"$current_version"作为输入传递给read命令;

  • read命令读取输入,并将其分割为多个字段,并将每个字段存储在一个数组中

    • -a选项告诉read命令将字段存储在数组

    • -r选项告诉它不要对反斜杠进行转义