如何编写shell脚本来获取JRE版本

时间:2009-12-09 11:42:02

标签: java shell

您好我想编写一个shell脚本,它将返回已安装的JRE版本。如何编写shell脚本文件来实现上述目的。

如果我编写java -version,那么应用程序返回“1.6.0_14” Java(TM)SE运行时环境(版本1.6.0_14-b08) Java HotSpot(TM)服务器VM(版本14.0-b16,混合模式)“。

但我不想要任何字符串。我只想要jre版本。

感谢 Sunil Kumar Sahoo

7 个答案:

答案 0 :(得分:6)

遵循monojohnny的答案背后的想法,但使用cut代替awk

java -version 2>&1 | head -n 1 | cut -d\" -f 2

答案 1 :(得分:4)

如果您只想要版本(而不是整个字符串),您可以执行以下操作:

- 将此保存为(例如)javaversion.sh

#!/bin/sh
# Changed code to remove the 'head -1' as per the suggestion in comment.
JAVA_VERSION=`java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'`
# export JAVA_VERSION
echo $JAVA_VERSION

这给出了:

$ 1.6.0_15

在我的系统上(该死的,更加过时!! :-))

我发现我的系统需要'2>& 1',因为输出似乎是'stderr'而不是'stdout'。 (2>& 1 =将标准错误的输出发送到标准输出流;在这种情况下,我们可以继续处理头部等...)。

awk中的'gsub'位是删除字符串中的双引号所必需的。 (Global SUBstitue),3美元是第三个字段(awk默认其字段分隔符为空格)。

使用“反引号”(`)以便我们捕获输出 - 然后将它存储在变量上。

[使用'cut'而不是'awk'可能会更优雅 - 请参阅GrzegorzOledzki的帖子。]

答案 2 :(得分:1)

可替换地:

编写一个访问系统属性“java.version”的Java类:这将删除其中的一些其他格式化废话,并允许您输出标准输出而不是标准错误。

让你的shell脚本用

调用它
java -cp <classpath> GetJavaVersion.class

答案 3 :(得分:1)

只需使用shell

$ a=$(java -version 2>&1 >/dev/null)
$ set -- $a
$ echo $3
"1.6.0_0"

答案 4 :(得分:1)

#!/bin/sh

java -version

答案 5 :(得分:-1)

看一下

的输出
java -version

答案 6 :(得分:-1)

您可以使用java命令使用-version开关获取已安装JRE的版本:

$ java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)