Sem ler todos os seus comentários, respondo apenas à sua pergunta inicial.
Em bash
, o operador para a indirecção de variáveis é !
, consulte este exemplo simples de script foo
:
#!/bin/bash
bar=2
echo "${!bar}"
Como uma nota secundária: Em (meu shell favorito) zsh
, você pode usar o Sinalizador de Expansão do Parâmetro P
para obter este resultado
#!/bin/zsh
bar=2
echo "${(P)bar}"
Mas você também pode usar uma abordagem diferente, a terceira linha também pode ler echo "${@[$bar]}"
.
Aqui você pode pensar em "$@"
como uma matriz de "$1" "$2" "$3" ...
, portanto, "${@[2]}"
é equivalente a "$2"
.
No entanto, os dois scripts foo
produzem o mesmo resultado:
$ ./foo one two three
two