如何检查 **程序** 版本是否等于或小于 x

如何检查 **程序** 版本是否等于或小于 x

我正在编写一个 shell 脚本,它必须知道某个程序版本是否小于或等于版本 x.xx.xx

这是一个示例脚本,用于尝试解释我想要做什么:

#!/bin/bash

APPVER="`some command to output version | grep x.xx*`"

if [[ "$APPVER" is smaller or equal to "x.xx*" ]]; then
    do something
else
    do something else
fi

有没有办法做到这一点?我找到了比较数字的方法,但它们不适用于版本号。我需要一个不使用或尽可能少使用程序的解决方案。

任何帮助表示赞赏!

答案1

如果你有 GNU 排序,请使用它的版本比较模式

if { echo "$APPVER"; echo "x.y.z"; } | sort --version-sort --check; then
  echo "App version is x.y.x or less"
fi

答案2

在 bash 中,你可以这样做printf -v

vercomp(){
   local a b IFS=. -; set -f
   printf -v a %08d $1; printf -v b %08d $3
   test $a "$2" $b
}

if vercomp 2.50.1 \< 2.6; then
   echo older
else
   echo newer
fi

相关内容