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

2022-08-31 13:32:57

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


答案 1

也许是这样的:

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

答案 2

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

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

它会给你 java like , version like 和 110 for .161.6.0_13151.5.0_17openjdk 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一起使用。


推荐