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
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!
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
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