linux shell javaバージョン番号の取得

1948 ワード

Javaバージョン番号の取得
$ java -version 2>&1 | sed '1!d' | sed -e 's/"//g' | awk '{print $3}'
1.8.0_222

Javaタイプ(openjdk)およびバージョン番号の取得
$ java -version 2>&1 | sed '1!d' | sed -e 's/"//g' -e 's/version//'
openjdk  1.8.0_222

説明:shellでjavaバージョン番号を取得する最も基本的な考え方はjava -versionの出力内容から出版本号を解析することであるが、java -versionの出力はデフォルトのstdoutではなくstderrであるため、java -versionの出力からjavaバージョン番号を解析するにはjava -versionの出力をリダイレクトし、以上のシナリオにおける2>&1は、本来stderrに出力コンテンツをstdoutにリダイレクト出力ことであり、java -versionの出力をパイプ|を介してsed,awkなどのツールで処理することができる.
コード中のsed '1!d'は、第1行を除くすべてのコンテンツを削除することを意味し、ここではjava -version出力の第1行のコンテンツjava version "1.8.0_111"のみを保持し、次にsed -e 's/"//g'を削除するのが簡単である.すなわち、文字列中の"号を削除するので、上記の第1行のコンテンツはさらにopenjdk version 1.8.0_222(同理's/version//'は削除文字列中のversion)に処理される.
次のawk '{print $3}'は、出力スペースの3番目のセグメントであり、最終バージョン番号1.8.0_222です.