Bash
如何檢查程序版本是否等於或小於 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
有沒有辦法做到這一點?我找到了比較數字的方法,但它們不適用於版本號。我需要一個不使用或盡可能少使用程序的解決方案。
任何幫助表示讚賞!
如果您有 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