Здесь java-версия анализируется с использованием java -version|grep -oP 'java version\s"\K[^"]+'
и сохраняется в переменной java_ver
, а затем подставляется в присваивании JAVA_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 -version 2>&1|grep -oP 'version\s"\K[^"]+'
:
grep -o
: при этом будет извлечено только соответствующее содержимое, а не соответствующая строка, -P
флаг разрешить PCRE
, теперь регулярное выражение является версией java, после которой ставится пробел (\s
), затем следует "
до следующего "
видно. Кроме того, игнорируйте что-либо слева от \K
.
Если у вас не включен -P
на вашем grep, вы можете использовать команду 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"
}