首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从BASH脚本检查Java版本的正确方法

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

Stack Overflow用户
提问于 2011-09-07 21:34:55
回答 15查看 88.4K关注 0票数 69

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

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2011-09-07 22:24:28

可能是这样的:

代码语言:javascript
复制
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
票数 97
EN

Stack Overflow用户

发布于 2011-09-07 21:58:23

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

代码语言:javascript
复制
JAVA_VER=$(java -version 2>&1 | sed -n ';s/.* version "\(.*\)\.\(.*\)\..*".*/\1\2/p;')

它将为您提供1.6.0_13等java版本的161.5.0_17等版本的15openjdk 11.0.6 2020-01-14 LTS版本的110。

因此,您可以很容易地在shell中进行比较:

代码语言:javascript
复制
[ "$JAVA_VER" -ge 15 ] && echo "ok, java is 1.5 or newer" || echo "it's too old..."

更新:正如注释中提到的,这段代码应该可以很好地与openjdk和JAVA_TOOL_OPTIONS一起工作。

票数 50
EN

Stack Overflow用户

发布于 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

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7334754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档