【问题标题】:Bash command to check if Oracle or OpenJDK java version is installed on LinuxBash 命令检查 Linux 上是否安装了 Oracle 或 OpenJDK java 版本
【发布时间】:2016-07-26 12:34:28
【问题描述】:

我需要一个 bash 行来检查当前安装的 java 版本是 Oracle 还是 OpenJDK。

通过解析java -version 命令的输出的单行代码:

java -version

java Oracle 输出:

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

java OpenJDK 输出:

java version "1.7.0_91"
OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

【问题讨论】:

    标签: java linux bash


    【解决方案1】:

    您可以使用以下 shell 脚本来工作:

    #!/bin/bash
    
    declare -a JAVA=($(sudo find / -name java | grep -v grep | grep "/bin/java"))
    
    for javapath in "${JAVA[@]}"
    do 
     if [[ $(sudo  ${javapath} -version 2>&1) != *"OpenJDK"* ]]; then 
        export JAVAVER=$(${javapath} -version 2>&1);
        echo "Java Location -- ${javapath}"
        echo "${JAVAVER}"
    
     fi
    done
    

    注意:这将涵盖在您的主机上运行的所有 java 可执行文件。

    【讨论】:

      【解决方案2】:
      java -version 2>&1 | grep "OpenJDK Runtime" | wc -l
      

      如果使用 Oracle JDK,则返回 0,如果使用 OpenJDK,则返回 1

      Bash 条件:

      if [[ $(java -version 2>&1 | grep "OpenJDK Runtime") ]]
      

      【讨论】:

      • Bash 条件可以写成if java -version 2>&1 | grep -q "OpenJDK Runtime"; then ...。不需要[[ ... ]]$( ... )
      【解决方案3】:
      if [[ $(java -version 2>&1) == *"OpenJDK"* ]]; then echo ok; else echo 'not ok'; fi
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        • 2011-07-08
        • 2013-09-26
        • 1970-01-01
        • 2019-08-05
        • 1970-01-01
        • 2010-09-23
        相关资源
        最近更新 更多