首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash脚本更新JAVA_HOME

使用bash脚本更新JAVA_HOME
EN

Stack Overflow用户
提问于 2019-05-29 02:30:26
回答 1查看 331关注 0票数 0

我对bash脚本编程是个新手,因此问题是,我有一个函数可以在系统中安装java并更新bashrc中的路径。

代码语言:javascript
复制
install_java(){
  echo "Installing Java 8 & 11 and setting JAVA_HOME to 8"
  brew tap adoptopenjdk/openjdk
  brew cask install adoptopenjdk8
  brew cask install adoptopenjdk11
  echo "export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home"
}

我想用java -version的输出更新硬编码的版本字符串这是我的java -version的输出

代码语言:javascript
复制
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

有人能帮我从第一行提取版本号并用它替换JAVA_HOME变量中的版本号吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-29 02:34:28

这里使用java -version|grep -oP 'java version\s"\K[^"]+'解析java版本,并将其存储在java_ver变量中,然后在JAVA_HOME赋值中替换。

代码语言:javascript
复制
install_java(){
  echo "Installing Java 8 & 11 and setting JAVA_HOME to 8"   
  brew tap adoptopenjdk/openjdk
  brew cask install adoptopenjdk8
  brew cask install adoptopenjdk11
  java_ver=$(java -version 2>&1|grep -oP 'version\s"\K[^"]+')
  echo "export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk${java_ver}.jdk/Contents/Home"
}

java -version 2>&1|grep -oP 'version\s"\K[^"]+'的解释

grep -o:这将只提取匹配的内容,而不是匹配的行,-P标志启用PCRE,现在正则表达式是java版本,后跟空格(\s),然后是",直到看到下一个"。此外,请忽略\K左侧的任何内容。

如果您的grep上没有启用 awk ,则可以使用grep命令:

代码语言:javascript
复制
install_java(){
  echo "Installing Java 8 & 11 and setting JAVA_HOME to 8"   
  brew tap adoptopenjdk/openjdk
  brew cask install adoptopenjdk8
  brew cask install adoptopenjdk11
  java_ver=$(java -version 2>&1|awk '/version/{gsub(/"/,"",$NF);print $NF}')
  echo "export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk${java_ver}.jdk/Contents/Home"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56348161

复制
相关文章

相似问题

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