如何从bash脚本检查Java是否可用(在PATH中或通过JAVA_HOME),并确保版本至少为1.5?
发布于 2011-09-07 22:24:28
可能是这样的:
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发布于 2011-09-07 21:58:23
您可以通过以下方式获取java版本:
JAVA_VER=$(java -version 2>&1 | sed -n ';s/.* version "\(.*\)\.\(.*\)\..*".*/\1\2/p;')它将为您提供1.6.0_13等java版本的16,1.5.0_17等版本的15和openjdk 11.0.6 2020-01-14 LTS版本的110。
因此,您可以很容易地在shell中进行比较:
[ "$JAVA_VER" -ge 15 ] && echo "ok, java is 1.5 or newer" || echo "it's too old..."更新:正如注释中提到的,这段代码应该可以很好地与openjdk和JAVA_TOOL_OPTIONS一起工作。
发布于 2019-05-22 00:52:45
上述答案仅适用于特定的Java版本(通常适用于Java 9之前的版本或Java 8之后的版本。
我编写了一个简单的一行程序,它将为Java版本6到11返回一个整数(也可能是将来的所有版本,直到它们再次更改它为止!)。
它基本上去掉了“1”。在版本号的开头,如果它存在,然后只考虑下一个".“之前的第一个数字。
java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1
https://stackoverflow.com/questions/7334754
复制相似问题