特定のプログラムのバージョンが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