Nested variables no Bash

By | May 29, 2009

Não sei ao certo como é o nome em português. Variáveis aninhadas? 😛

Me deparei com um problema assim hoje: Eu tinha uma função num script shell que recebia um parâmetro de sucesso ou erro. Eu executava algumas coisas e depois tinha que jogar uns dados no arquivo respectivo.

Então inicialmente tinha setado uma variável com os paths dos caminhos:

ARQUIVO_SUCESSO=/tmp/sucesso
ARQUIVO_ERRO=/tmp/erro

Minha função recebia o status como o primeiro argumento ($1) e por isso depois de processar eu precisaria de algo assim:

echo "batatinha" >> $ARQUIVO_$1

Mas logo percebi que isso não funciona. A solução, no entanto, é simples:

echo "batatinha" >>  $(eval echo \$ARQUIVO_$1)

Anotem ai na caixa de truques do Bash.