Lendo a variável dinâmica de env

0

Digamos que eu tenha uma variável env:

  echo lmx_setting_foo="bar";

a variável env acima foi criada como:

$ lmx set foo bar

e isso aconteceu:

export "lmx_setting_$2"="$3"

Digamos que alguém queira recuperar "foo", eles fariam:

$ lmx get foo

mas se eu fizer isso:

echo "$lmx_setting_$2"

parece não funcionar

    
por Alexander Mills 06.07.2018 / 02:47

1 resposta

2

Existem algumas maneiras de fazer isso, mas o mais portátil é provavelmente

eval "echo \$lmx_setting_$2"

mas a maneira específica do bash de evitar uma eval seria

temp="lmx_setting_$2"
echo ${!temp}

Se você não tiver antes, você deve abrir a página man bash e rolar para baixo para Parâmetro Expansion para ver todas as suas opções. Você perguntou especificamente sobre variáveis de ambiente, mas se você não precisa exportar essas variáveis e você tem uma nova versão suficiente do bash (4.0+) você pode usar Matrizes Associativas e evitar toda essa confusão ... mas então seu script realmente não é é portátil.

    
por 06.07.2018 / 03:24