Função para avaliar variáveis no BASH

2

Dado um nome de variável, existe uma função que imprimirá seu valor?

Freqüentemente, passo o nome de uma variável para uma função bash e, em vez de fazer a expansão ao passar, gostaria de expandi-la dentro da função. É claro que, quando faço isso, acabo tendo que criar a string com o nome da variável e, em seguida, executar exec. Seria muito mais sucinto se eu pudesse apenas executar um comando que ecoasse a saída!

    
por Prospero 28.10.2011 / 16:59

2 respostas

6
show_val() { echo "${!1}"; }
foo=bar
echo $(show_val foo)   # => bar
# works with arrays too
a=(zero one two)
echo $(show_val a[1])  # => one

Documentado no manual bash aqui

    
por 28.10.2011 / 17:16
1

Não tenho certeza do que você quer dizer com a sua pergunta sobre "executar exec". Talvez você quis dizer eval.

show_val() { eval echo \$$1; }
foo=bar
show_val foo
    
por 28.10.2011 / 20:40