Suponha que eu tenha uma variável var
no bash. Posso atribuir um valor a ele. Por exemplo, vou transformá-lo em uma string:
var="Test"
Quero echo
o nome de var
, não o valor mantido por var
. (Posso fazer o último echo $var
, mas na verdade quero fazer o primeiro.)
A resposta a esta pergunta do SOdiz para usar echo ${!var}
, mas quando faço isso, echo apenas retorna uma linha em branco. Por exemplo, este script bash
#!/bin/bash
echo "Hi"
var="Test"
echo ${!var}
echo "Bye"
retorna esta saída:
Hi
Bye
com apenas uma linha em branco entreOieTchau, em vez devar. O que estou fazendo de errado?
Estou correndobash 4.1.5(1)sobreUbuntu 10.04.4.
Responder1
Oexpansão de parâmetro shell ${!nome@}ou${!nome*}poderia fazer o truque,
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
Embora viável, não consigo imaginar a utilidade disso ...
Responder2
Se você quiser simplesmente gerar um nome de variável estática, você pode escapar do $
sinal -:
echo \$var