Expandir indiretamente variáveis no shell

8

Eu preciso referenciar indiretamente uma variável no bash shell.

Eu basicamente quero o que você pode fazer em make escrevendo $($(var)) .

Eu tentei usar ${$var} , que seria a solução mais direta em bash , mas recebo este erro:

bash: ${$var}: bad substitution

Existe uma maneira de fazer isso?

O que eu estou tentando fazer é iterar todos os argumentos ( $1 , $2 , $3 , ...) para um programa usando uma variável de iteração e não posso fazer isso sem indireção.

    
por wefwefa3 15.09.2015 / 17:37

2 respostas

12

Se você tiver var1=foo e foo=bar , poderá receber bar dizendo ${!var1} . No entanto, se você quiser iterar sobre os parâmetros posicionais, é quase certamente melhor fazer

for i in "$@"; do
    # something
done
    
por 15.09.2015 / 17:43
2

Usando /bin/bash :

foo=bar
test=foo
echo ${!test}

# prints -> bar
    
por 14.02.2017 / 06:53