【问题标题】:Shell script to find difference between version provided as string e.g. 102.19.23, 102.19.22用于查找以字符串形式提供的版本之间的差异的 Shell 脚本,例如102.19.23、102.19.22
【发布时间】:2020-06-24 06:33:49
【问题描述】:

{ 在此处输入代码在此处输入代码需要shell脚本的帮助 我正在开发应用程序部署自动化 shell 脚本。应用程序版本的格式类似于 102.19.022 、 102.19.021 格式。 我想编写一个 shell 脚本,其中用户将提供需要部署的字符串格式的版本(例如 102.19.23),脚本会将其转换为数字并将此版本与当前系统版本(例如 102.19.022)进行比较。基于此脚本将执行检查,它将比较两个版本并显示数字差异。如果两个版本相同,则脚本将失败,因为需要部署的版本已部署在系统中。如果当前部署的版本是 102.19.022 并且用户正在尝试部署 102.19.024,那么它应该计算差异,如果它高于 1,那么它应该失败。如果差异为 1,那么它应该继续进行。 }

【问题讨论】:

标签: linux bash shell


【解决方案1】:
function checkver() {
    local VER1=$1 VER2=$2
    VER1n=$(echo "${VER1}" | sed -e "s/\.0/\./g" -e "s/\.//g")
    VER2n=$(echo "${VER2}" | sed -e "s/\.0/\./g" -e "s/\.//g")
    if [ "${VER1n}" = "${VER2n}" ]; then
        echo "same version"
    elif [ $(( VER2n - VER1n )) -eq 1 ]; then
        echo "diff is one, good"
    else
        echo "diff is not one, bad"
    fi
}

$ checkver "102.19.022" "102.19.23"
diff is one, good

$ checkver "102.19.22" "102.19.24"
diff is not one, bad

$ checkver "102.19.022" "102.19.22"
same version

【讨论】:

  • RohitBuwa,这对您有帮助吗?如果是,请接受。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2012-04-11
  • 2011-03-24
  • 1970-01-01
相关资源
最近更新 更多