Java 如何编写shell脚本以获取JRE版本
嗨,我想写一个shell脚本,它将返回已安装的JRE版本。如何编写shell脚本文件来实现上述功能 如果我编写java版本,那么应用程序将返回“1.6.0_14” Java(TM)SE运行时环境(build 1.6.0_14-b08) Java HotSpot(TM)服务器虚拟机(构建14.0-b16,混合模式)” 但我不想要任何字符串。我只想要jre版本 谢谢Java 如何编写shell脚本以获取JRE版本,java,shell,Java,Shell,嗨,我想写一个shell脚本,它将返回已安装的JRE版本。如何编写shell脚本文件来实现上述功能 如果我编写java版本,那么应用程序将返回“1.6.0_14” Java(TM)SE运行时环境(build 1.6.0_14-b08) Java HotSpot(TM)服务器虚拟机(构建14.0-b16,混合模式)” 但我不想要任何字符串。我只想要jre版本 谢谢 Sunil Kumar Sahoo看看 #!/bin/sh java -version java -version 您可以使用j
Sunil Kumar Sahoo看看
#!/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)
如果只需要版本(而不是整个字符串),可以执行以下操作: --将其另存为(比如)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”位对于删除字符串中的双引号是必需的。(全局替换),$3是第三个字段(awk将其字段分隔符默认为空白)
使用“backticks”(`)可以捕获输出,然后将其存储在变量中
[在这里使用'cut'而不是'awk'可能更优雅-参见GrzegorzOledzki的帖子。]遵循monojohnny答案背后的想法,但使用
cut
而不是awk
:
java -version 2>&1 | head -n 1 | cut -d\" -f 2
或者:
编写一个访问系统属性“Java.version”的Java类:它将去掉其中的一些其他格式垃圾,并允许您输出到标准输出,而不是标准错误
让你的shell脚本用一个
java -cp <classpath> GetJavaVersion.class
java-cp GetJavaVersion.class
只需使用shell即可
$ a=$(java -version 2>&1 >/dev/null)
$ set -- $a
$ echo $3
"1.6.0_0"
丢掉脑袋,使用awk:java-version2>&1 | awk'NR==1{gsub(/“/,”);print$3}@monojohnny是否可以从shell直接在屏幕上打印它而不执行脚本?@Michael你是说除了使用“java-version”之外?