您好我想编写一个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
答案 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)
#!/bin/sh
java -version
答案 3 :(得分:1)
可替换地:
编写一个访问系统属性“java.version”的Java类:这将删除其中的一些其他格式化废话,并允许您输出标准输出而不是标准错误。
让你的shell脚本用
调用它java -cp <classpath> GetJavaVersion.class
答案 4 :(得分:1)
只需使用shell
$ a=$(java -version 2>&1 >/dev/null)
$ set -- $a
$ echo $3
"1.6.0_0"
答案 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)