Obtenha dois valores da saída do comando em um script bash

1

Eu tenho um bashscript, que executa um comando e calcula um par de valores, cuja saída pode se parecer com isso.

a,b (10.0000000000, 10.0000000000) -> volt (2088133.7088034691, -222653.3238934391)

E, no caso de parâmetros ou erros inválidos, o programa pode mostrar diferentes mensagens de erro.

Existe uma maneira segura de analisar os dois valores de volt e armazená-los em duas variáveis em um script bash?

Editar: Solução graças a @jasonwryan e @KasiyA

variable=$([program call])

read var1 var2 <<< $(awk -F"[)(, ]" '{printf "%s\n%s\n", $(NF-3),$(NF-1)}' <<< "$variable")

echo "val1 = $var1"
echo "val2 = $var2"
    
por user3199134 08.11.2014 / 07:31

1 resposta

1

Depende de quão confiável é a saída e o que acontece quando você recebe as "mensagens de erro diferentes", ou seja, como isso deve ser tratado.

Uma abordagem básica, com o que você tem acima, você pode usar awk :

awk -F"[)(, ]" '{printf "var1=%s\nvar2=%s\n", $11,$13}'      
var1=2088133.7088034691
var2=-222653.3238934391

Um "modo seguro" dependeria de o que essas mensagens de erro fazem na saída ...

Como KasiyA aponta , uma abordagem mais robusta seria usar a variável awk integrada de NF para calcular os campos relevantes:

awk -F"[)(, ]" '{printf "var1=%s\nvar2=%s\n", $(NF-3),$(NF-1)}'
    
por 08.11.2014 / 07:54