从 BASH 脚本检查 Java 版本的正确方法

新手上路,请多包涵

如何从 bash 脚本检查 Java 是否可用(在 PATH 中或通过 JAVA_HOME)并确保版本至少为 1.5?

原文由 Aaron Digulla 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 421
2 个回答

也许是这样的:

 if type -p java; then
    echo found java executable in PATH
    _java=java
elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]];  then
    echo found java executable in JAVA_HOME
    _java="$JAVA_HOME/bin/java"
else
    echo "no java"
fi

if [[ "$_java" ]]; then
    version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
    echo version "$version"
    if [[ "$version" > "1.5" ]]; then
        echo version is more than 1.5
    else
        echo version is less than 1.5
    fi
fi

原文由 glenn jackman 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以通过以下方式获取 java 版本:

 JAVA_VER=$(java -version 2>&1 | sed -n ';s/.* version "\(.*\)\.\(.*\)\..*".*/\1\2/p;')

it will give you 16 for java like 1.6.0_13 , 15 for version like 1.5.0_17 and 110 for openjdk 11.0.6 2020-01-14 LTS .

所以你可以很容易地在 shell 中比较它:

 [ "$JAVA_VER" -ge 15 ] && echo "ok, java is 1.5 or newer" || echo "it's too old..."

更新: 如评论中所述,此代码应与 openjdk 和 JAVA_TOOL_OPTIONS 一起正常工作。

原文由 Michał Šrajer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题