我的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)
如何使用bash脚本获得以下格式的Java版本:1.8.0
我尝试了多种选项,如java -version 2>&1 | head -n 1 | cut -d'"' -f2
,但我无法得到所需的输出。
要检查字符串(您期望的版本),可以使用grep:
if java -version 2>&1 | head -n 1 | grep --fixed-strings '"1.8.0'
then echo expected version
else echo unexpected version
fi
注意--fixed-strings
(简称-F
),否则grep将.
视为RegEx,它将匹配任何字符。谢谢Gorodon指出这一点!我还添加了前面的"
引号,所以它不会匹配11.8.0
。
$ IFS='"_' read -r _ ver _ < <(java -version 2>&1)
$ echo "$ver"
1.8.0
你可以试试这个
java --version | head -n1 |cut -d " " -f1,2
openjdk 8.0
您可以使用grep(或egrep)打印匹配的模式:
java --version | head -n 1 | grep -Po '[[:digit:]]{1,3}.[[:digit:]]{1,3}.[[:digit:]]{1,3}'
java --version | head -n 1 | egrep -o '[[:digit:]]{1,3}.[[:digit:]]{1,3}.[[:digit:]]{1,3}'