您好我想编写一个shell脚本,它将返回已安装的JRE版本。如何编写shell脚本文件来实现上述功能。如何编写shell脚本以获得JRE版本
如果我写Java的版本,那么应用程序返回 “1.6.0_14” 的Java(TM)SE运行时环境(建立1.6.0_14-B08) 的HotSpot的Java(TM)服务器VM(建14.0-B16,混合模式)”。
但我想DONOT任何字符串。我想只有JRE版本。
感谢 苏尼尔·库马尔Sahoo
您好我想编写一个shell脚本,它将返回已安装的JRE版本。如何编写shell脚本文件来实现上述功能。如何编写shell脚本以获得JRE版本
如果我写Java的版本,那么应用程序返回 “1.6.0_14” 的Java(TM)SE运行时环境(建立1.6.0_14-B08) 的HotSpot的Java(TM)服务器VM(建14.0-B16,混合模式)”。
但我想DONOT任何字符串。我想只有JRE版本。
感谢 苏尼尔·库马尔Sahoo
如果你只想版本(而不是整个字符串),你可以这样做像:
- 另存为(比方说)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'位有必要删除字符串中的双引号。 (全球SUBSTitue),$ 3是第三个字段(awk默认其字段分隔符为空格)。
“反引号”(`)被用来捕获输出 - 然后我们将它存储在一个变量中。
[使用 '一刀切',而不是 '的awk' 可能是更优雅在这里 - 见GrzegorzOledzki的帖子。]
#!/bin/sh
java -version
看看的
输出java -version
可以使用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)
跟在后面monojohnny的答案的想法,但使用的cut
代替awk
:
java -version 2>&1 | head -n 1 | cut -d\" -f 2
或者:
编写一个访问系统属性“java.version”的Java类:它将删除其他一些格式化垃圾,并允许您输出到标准输出而不是标准错误。
只是你的shell脚本中调用它与一个
java -cp <classpath> GetJavaVersion.class
只是使用shell
$ a=$(java -version 2>&1 >/dev/null)
$ set -- $a
$ echo $3
"1.6.0_0"
失去了头并使用awk:Java的版本2>&1 | awk的“NR == 1 {gsub(/“/,”“); print $ 3}' – ghostdog74 2009-12-09 14:38:53
@monojohnny是否可以在不执行脚本的情况下将其从shell的屏幕上打印出来? – Michael 2011-12-04 11:30:06
@Michael你的意思不仅仅是使用”java -version“? – kevingreen 2012-12-13 15:23:40