【问题标题】:how to write shell script to get JRE version如何编写shell脚本来获取JRE版本
【发布时间】:2010-12-24 19:22:03
【问题描述】:

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

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

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

谢谢 苏尼尔·库马尔·萨胡

【问题讨论】:

    标签: java shell


    【解决方案1】:

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

    -- 另存为(比如)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 默认其字段分隔符为空白)。

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

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

    【讨论】:

    • 丢人现眼使用awk:java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'
    • @monojohnny 是否可以在不执行脚本的情况下从 shell 将其打印在屏幕上?
    • @Michael 你的意思不仅仅是使用“java -version”?
    【解决方案2】:

    只使用外壳

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

    【讨论】:

      【解决方案3】:

      或者:

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

      让你的 shell 脚本用

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

      【讨论】:

        【解决方案4】:

        遵循monojohnny 答案背后的想法,但使用cut 而不是awk

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

        【讨论】:

          【解决方案5】:

          您可以使用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)
          

          【讨论】:

            【解决方案6】:

            看看输出

            java -version
            

            【讨论】:

              【解决方案7】:
              #!/bin/sh
              
              java -version
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-06-24
                • 1970-01-01
                • 1970-01-01
                • 2014-07-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多