如何用Bash脚本提取格式为1.8.0的Java版本?
解决Bash脚本提取Java主版本号的问题
你的Java版本输出如下:
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
你之前的命令java -version 2>&1 | head -n 1 | cut -d'"' -f2得到的是1.8.0_312,要获取1.8.0格式的主版本号,可通过以下几种方式实现:
方法一:二次
cut分割
在原有命令基础上追加下划线分割逻辑,完整命令:java -version 2>&1 | head -n 1 | cut -d'"' -f2 | cut -d'_' -f1逻辑:先用双引号分割拿到
1.8.0_312,再用下划线分割取第一部分,得到主版本号。方法二:
sed正则匹配
直接通过正则提取数字.数字.数字格式的主版本部分,命令:java -version 2>&1 | sed -n 's/.*version "\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/p'逻辑:匹配版本字符串中符合主版本格式的片段,直接提取输出。
方法三:
awk分割处理
借助awk的多分割功能实现,命令:java -version 2>&1 | awk -F '"' '/version/{split($2,a,"_");print a[1]}'逻辑:先通过双引号分割出完整版本字符串,再用下划线分割为数组,输出数组第一个元素。
以上方法均可精准得到你需要的1.8.0格式版本号。
内容的提问来源于stack exchange,提问作者user15566016
相关产品推荐
相关产品推荐

