如何在Linux中使用单行命令获取Java版本
我想用一个命令在Linux中获取Java版本。
我是awk的新手,所以我正在尝试类似的东西
java -version|awk '{print$3}'
但是,这不会返回版本。 我如何从下面的Java版本输出获取1.6.0_21
?
java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b06) Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)
- 将stderrredirect到stdout。
- 获得第一线
-
过滤版本号。
java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}'
这是一个微小的变化,但PJW的解决scheme并不适合我:
java -version 2>&1 | head -n 1 | cut -d'"' -f2
只是削减分隔符的string"
(双引号),并获得第二个领域。
我build议使用grep -i version
,以确保你得到正确的行包含版本string。 如果您设置了环境variablesJAVA_OPTIONS,则在打印版本信息之前,openjdk将打印java选项。 这个版本返回1.6,1.7等
java -version 2>&1 | grep -i version | cut -d'"' -f2 | cut -d'.' -f1-2
因为(至less在我的linux系统上)版本string看起来像“1.8.0_45”:
#!/bin/bash function checkJavaVers { for token in $(java -version 2>&1) do if [[ $token =~ \"([[:digit:]])\.([[:digit:]])\.(.*)\" ]] then export JAVA_MAJOR=${BASH_REMATCH[1]} export JAVA_MINOR=${BASH_REMATCH[2]} export JAVA_BUILD=${BASH_REMATCH[3]} return 0 fi done return 1 } #test checkJavaVers || { echo "check failed" ; exit; } echo "$JAVA_MAJOR $JAVA_MINOR $JAVA_BUILD" ~