使用bash脚本更新JAVA_HOME
我不熟悉bash脚本,所以这个问题, 我有一个在系统中安装java并在bashrc中更新路径的函数使用bash脚本更新JAVA_HOME,bash,shell,Bash,Shell,我不熟悉bash脚本,所以这个问题, 我有一个在系统中安装java并在bashrc中更新路径的函数 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_
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版本输出
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变量中的版本号吗 这里使用
java-version | grep-oP'java version\s“\K[^”]+'
解析java版本,并存储在java版本
变量中,然后在java\u HOME
赋值中替换
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-version2>&1 | grep-oP'version\s“\K[^”]+”
:
grep-o
:这将只提取匹配内容,而不是匹配行,-p
标志enablePCRE
,现在正则表达式是java版本,后跟空格(\s
),然后后跟“
,直到看到下一个”
。另外,忽略\K
左侧的任何内容
如果您的grep上没有启用-p
,则可以使用awk
命令:
我在你的终端上运行了
echo$java\u ver
,它是一个空字符串。你能在你的终端上运行java-version | grep-oP'java version\s”\K[^”]+
吗?用java-version 2>&1
替换java-version
@MelissaStewart,更新答案,请重试,原因,java-version
打印到stderr,要将它传输到grep
中,我们需要在命令之后使用2>&1
转换为标准输出。请尝试java-version 2>&1 | awk'/version/{gsub(/“/,”,“,$NF);打印$NF}“
由于您的grep上不支持-P
标志,因此请使用awk命令以下答案是否以任何方式帮助您解决问题?如果有,请您接受答案,如果没有帮助,请提供更多信息以供参考。
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"
}