bashまたはシェルスクリプトを使用してLinuxシステムでより高いJavaバージョンを見つける方法

bashまたはシェルスクリプトを使用してLinuxシステムでより高いJavaバージョンを見つける方法

Javaバージョンをテストして比較する必要があります。

$version> $New_versionをチェックするのは難しい方法の提案がありますか?

[root@master tmp]#  version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
[root@master tmp]# echo $version
1.8.0_65
[root@master tmp]# New_version=1.8.0_111
[root@master tmp]# [[ $version > $New_version ]] && echo ok
ok
[root@master tmp]#

ベストアンサー1

「入力がソートされていることを確認」オプションを使用して、GNUソートバージョンのソートを使用してください。

printf '%s\n%s\n' "$version" "$New_version" | sort -rVc 2>/dev/null && echo ok

2>/dev/null入力がソートされていない場合は、ソートに関する苦情を取り除きます。入力がソートされたかどうかを知りたいだけで、これは戻りコードに反映されます。

実行例:

$ version=1.8.0_65
$ New_version=1.8.0_111
$ printf '%s\n%s\n' "$version" "$New_version" | sort -rVc 2>/dev/null && echo ok
$ version=1.8.0_650
$ printf '%s\n%s\n' "$version" "$New_version" | sort -rVc 2>/dev/null && echo ok
ok
$

または難しい方法で行います。

oldstr=${old//./ }
oldstr=${oldstr//_/ }
newstr=${new//./ }
newstr=${newstr//_/ }
read -a oldarr <<< "$oldstr"
read -a newarr <<< "$newstr"

[ ${oldarr[0]} -ge ${newarr[0]} ] &&
[ ${oldarr[1]} -ge ${newarr[1]} ] &&
[ ${oldarr[2]} -ge ${newarr[2]} ] &&
[ ${oldarr[3]} -gt ${newarr[3]} ] && echo OK

その後、新しい変数が設定され、すべての点と下線をスペースに置き換えて、ここに文字列として入力して配列に分割し、並列配列readの各要素を比較します。

おすすめ記事