假设我想要获取java.runtime.version
Linux shell 的内容。
我不想打电话java -version
或做任何类型的 grepping / sedding,因为我们过去已经使用过这种方法,但事实证明它很不稳定。
➜ java -version
openjdk version "21" 2023-09-19 LTS
OpenJDK Runtime Environment Temurin-21+35 (build 21+35-LTS)
OpenJDK 64-Bit Server VM Temurin-21+35 (build 21+35-LTS, mixed mode)
例如,这个示例包含太多输出,这些输出在不同版本之间、在不同供应商之间有所差异。
我已经尝试过使用 jshell:
但输出仍然包含我无法禁用的所有命令反馈(至少我不知道:
➜ printf $'System.out.println(java.lang.System.getProperty("java.runtime.version"));\n/exit\n' | jshell -s
-> System.out.println(java.lang.System.getProperty("java.runtime.version"))21+35-LTS
-> %
在此示例中,我想要的仅仅是21+35-LTS
可靠且面向未来的一部分。
我愿意使用 Ubuntu slim 基础镜像或最新的 Java jdk 中提供的工具。
编辑:只要解决方案具有部分面向未来性并且可以与不同的 Java 供应商兼容,我一般不反对 grep/sed。