Bash

如何檢查程序版本是否等於或小於 x

  • February 2, 2021

我正在編寫一個 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

有沒有辦法做到這一點?我找到了比較數字的方法,但它們不適用於版本號。我需要一個不使用或盡可能少使用程序的解決方案。

任何幫助表示讚賞!

如果您有 GNU 排序,請使用其版本比較模式

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

在 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

引用自:https://unix.stackexchange.com/questions/632337