首页 > 解决方案 > 用于检查 jdk 版本是否高于 1.8 的 Shell 脚本

问题描述

在脚本中,我想检查是否安装了 java 以及它是否比 1.8 更新。

java -version 2>$1 >/dev/null | egrep "\S+\s+version" | awk '{print substr($3,0,5)}' | tr -d '"'

我想结果可能是这样的:

1.8.0_225
11.0.2
1.6.1_223

因此,为了使其具有可比性,最好将此值映射到\d+\.\d+

1.80225
11.02
1.61223

它可以通过将所有不是数字的东西替换为除了第一个点之外的任何东西来完成。

标签: linuxshell

解决方案


您可以像下面这样使用 awk:

java -version 2>&1 | awk  -F[\"._] '/version/{print $2"."$3$4$5$6$7}'

使用 sed:

java -version 2>&1 | sed -Ee 's/.*"(.*)"$/\1/g;s/^([0-9]+\.[0-9]+\.)([0-9]+)[^0-9]/\1\2/g;q'

推荐阅读