如何在Linux中使用单行命令获取Java版本

时间:2011-09-29 11:09:02

标签: linux parsing version

我想在一个命令中获取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)

6 个答案:

答案 0 :(得分:80)

  1. 将stderr重定向到stdout。
  2. 获取第一行
  3. 过滤版本号。

    java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}'
    

答案 1 :(得分:9)

这是一个微小的变化,但PJW的解决方案并不适合我:

java -version 2>&1 | head -n 1 | cut -d'"' -f2

只需剪切分隔符"上的字符串(双引号)并获取第二个字段。

答案 2 :(得分:3)

我建议使用grep -i version来确保您获得包含版本字符串的正确行。如果设置了环境变量JAVA_OPTIONS,openjdk将在打印版本信息之前打印java选项。此版本返回1.6,1.7等。

java -version 2>&1 | grep -i version | cut -d'"' -f2 | cut -d'.' -f1-2

答案 3 :(得分:0)

只获得“主要”构建#:

java -version 2>&1 | head -n 1 | awk -F'["_.]' '{print $3}'

答案 4 :(得分:0)

这种方式对我有用。

# java -version 2>&1|awk '/version/ {gsub("\"","") ; print $NF}'

1.8.0_171

答案 5 :(得分:0)

您可以使用--version,在这种情况下,不需要重定向到标准输出

java --version | head -1 | cut -f2 -d' '

来自Java帮助

-version      print product version to the error stream and exit
--version     print product version to the output stream and exit