shell 脚本中的 semver 增量

hdh*_*una 2 sh parameter-expansion

我正在尝试实施一个解决方案来增加版本。这是我想出的:

#!/bin/sh -x

VAR=1.0.1 # retrieved from Gitlab API

case $1 in
patch)
    TAG=${VAR%.*}.$((${VAR##*.} + 1))
    ;;

major)
    TAG=$((${VAR%%.*} + 1)).0.0
    ;;

*)
    tmp=${VAR%.*}
    minor=${tmp#*.}
    TAG=${VAR%%.*}.$((minor + 1)).0
    ;;
esac

echo $TAG

Run Code Online (Sandbox Code Playgroud)

major&patch按预期工作;但是,我面临着增加的问题minor

碰撞时1.0.1,未成年人应1.1.0;但是,我的代码生成1.2.0. 我究竟做错了什么?

更多信息,该脚本在 GitlabCI 管道内执行。

编辑:使用 @jhnc 的建议答案更新了代码

Kam*_*Cuk 9

我只想:

#!/bin/sh

var=1.0.1
IFS=. read -r version minor patch <<EOF
$var
EOF

case "$1" in
patch) tag="$version.$minor.$((patch+1))"; ;;
major) tag="$((version+1)).0.0"; ;;
*)     tag="$version.$((minor+1)).0"; ;;
esac

echo $tag
Run Code Online (Sandbox Code Playgroud)

适用于高山灰烬。