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

abi*_*964 44 linux parsing version

我想在一个命令中获取Linux中的Java版本.

我是awk的新手所以我正在尝试类似的东西

java -version|awk '{print$3}'  
Run Code Online (Sandbox Code Playgroud)

但这并没有返回版本.我如何1.6.0_21从下面的Java版本输出中获取?

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)
Run Code Online (Sandbox Code Playgroud)

Pri*_*ley 81

  1. 将stderr重定向到stdout.
  2. 获得第一线
  3. 过滤版本号.

    java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}'
    
    Run Code Online (Sandbox Code Playgroud)

  • 少一个过程:`java -version 2>&1 | awk -F \"'/ version/{print $ 2}' (9认同)

小智 9

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

java -version 2>&1 | head -n 1 | cut -d'"' -f2
Run Code Online (Sandbox Code Playgroud)

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


小智 5

我建议使用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
Run Code Online (Sandbox Code Playgroud)