在 BASH 脚本中检查 Javac 版本的正确方法

Correct way to check Javac version in BASH script

我正在尝试在 bash 脚本中获取 javac 版本(用于 apks 操作和构建)。

我找到了一种获取 java 版本的方法,它可能相似但不相同(它不适用于 javac)。

P.S.: 目前在 OS X 上工作,但也应该在 Linux 上工作。

编辑:PS:某些环境的 PATH 中可能没有 javac

谢谢!

如果javacPATH中:

jc_ver="$(javac -version 2>&1| grep -o '[0-9_.]*$')"
echo "$jc_ver"

或使用cut:

jc_ver="$(javac -version 2>&1| cut -d ' ' -f2)"

试试这个支持两种情况的函数,无论 javac 是否在 PATH 变量中

showJavacVersion() 
{
    x="h"
    {
        x=$(type -p javac)
    } >&-
    if [ -n "$x" ]; then
        _javac=javac
    elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/javac" ]];  then
        _javac="$JAVA_HOME/bin/javac"
    fi
    if [[ "$_javac" ]]; then
        version=$("$_javac" -version 2>&1 | awk -F ' ' '/javac/ {print }')
        echo $version
    else
        echo javac not found
    fi
}

就这么叫吧

showJavacVersion

希望对您有所帮助!