bash迭代版本列表(字符串),仅允许升级

问题描述 投票:0回答:1

我正在处理自定义bash脚本,它将运行一堆命令,这些命令将在更新Web应用程序时进行更新。

因此,我会得到一个版本列表(我的bash代码简短摘录):

declare -a Versions=("1.3.17" "1.3.18" "1.3.19" "1.3.20" "1.4.0-beta.1" "1.4.0-beta.1" "1.4.0-beta.2" "1.4.0" "1.4.1" "1.4.2" "1.4.3" "1.4.4" "1.5.0-beta.1" "1.5.0" "1.5.1" "1.5.2")

echo "Please enter current version"
read version

echo "Please enter version which you'd like to upgrade"
read updateVersion

case "$updateVersion" in
        1.5.2)
            for val in "${Versions[@]}"; do

                # Not sure how to treat version comparison. Basically the version would be added in order on the $Versions array. Higher index in array would mean higher version to upgrade.
                if [ "$val" == "$updateVersion" ]; then
                    echo "Update to version from $updateVersion to $val"
                else
                    # Not sure if this is really needed
                    echo ""
                fi

              echo $val
            done
            echo "Updating HumHub from $version to $updateVersion"
            ;;         
        *)
            echo $"Usage: $0 {1.3.17|1.3.18|1.3.19|1.3.20|1.4.0-beta.1|1.4.0-beta.1|1.4.0-beta.2|1.4.0|1.4.1|1.4.2|1.4.3|1.4.4|1.5.0-beta.1|1.5.0|1.5.1|1.5.2}"
            exit 1
esac

如何允许我只指定$version=1.3.17$version=1.5.2才能进行升级?

bash shell for-loop syntax
1个回答
0
投票
case "$updateVersion" in
        1.5.2)
        1.3.17)
            for ...

我认为您可以如上所述处理多值。

© www.soinside.com 2019 - 2024. All rights reserved.