こんにちは。
二つのバージョン番号の値を比較するシェルスクリプトを作りました1。bc
コマンドで数値比較させています。
- 対応するバージョン番号は、xx.yy.zz という形式で、各2桁以下とし、また xx.yy や xx でも対応します。
$ echo "3.0.1 > 3" | ./bc_ver.sh
true
bc_ver.sh
#!/bin/sh
## functions
bc_f () {
[ "$(bc)" -eq 1 ] # "222222 > 111111" => true, for example
}
ver2int_f () {
echo "$1" | awk -F. '{printf "%2d%02d%02d", $1,$2,$3}' # xx.yy.zz => xxyyzz
}
convert_f () {
set $(cat)
echo "$(ver2int_f "$1")" "$2" "$(ver2int_f "$3")"
}
split_f () {
perl -pe 's/([\d\.]+).*?([=<>]+).*?([\d\.]+)/$1 $2 $3/g' # "xx<yy" => "xx < yy", for example
}
## main
[ -p /dev/stdin ] && INPUT=$(cat) || INPUT="$@"
echo "$INPUT" | split_f | convert_f | bc_f && echo true || echo false
exit