Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写shell脚本以获取JRE版本_Java_Shell - Fatal编程技术网

Java 如何编写shell脚本以获取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

嗨,我想写一个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

您可以使用
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”之外?