linux - 用于检查 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
它可以通过将所有不是数字的东西替换为除了第一个点之外的任何东西来完成。
解决方案
您可以像下面这样使用 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'
推荐阅读
- excel - 将 Excel 工作表导出到具有使用 VBA 选择路径和文件名的选项的 .csv 文件
- azure - 无法重定向到 Azure AD 登录
- angular - 刷新后保持选中的复选框
- .net - 如何将此列表限制为仅 AutoCAD 中的图纸空间布局?
- intellij-idea - 如何为 intellij 正确设置 adb/PATH
- typescript - 要联合的类数组(反之亦然)
- java - 当字符属性更改时,Java JTextPane 不会更新其大小
- bash - 使用 sudo 和 awk 进行 Bash while 循环
- python - 是否可以在 PysimpleGui 表中插入复选框?
- microsoft-graph-api - 从 Teams 获取活跃的 PSTN 来电显示