Digamos que eu queira obter o conteúdo java.runtime.version
do shell do Linux.
Não quero java -version
fazer nenhum tipo de busca/envio, pois já usamos essa abordagem no passado e ela se mostrou instável.
➜ 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)
Este exemplo contém muita saída que muda de versão para versão e também de fornecedor para fornecedor.
O que eu já tentei foi usar jshell:
Mas a saída ainda contém todos os comentários de comando que não posso desabilitar (pelo menos não sei:
➜ 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
-> %
O que eu quero neste exemplo é apenas a 21+35-LTS
parte de uma forma confiável e à prova do futuro.
Estou aberto a usar ferramentas disponíveis em uma imagem base do Ubuntu Slim ou no recente Java JDK.
EDIT: Não sou contra grep/sed em geral, desde que a solução seja à prova de futuro e funcione com diferentes fornecedores Java.