A expansão dos parâmetros do shell $ {! name @} ou $ {! name *} pode ajudar,
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
Embora seja viável, não consigo imaginar a utilidade disso ...
Suponha que eu tenha uma variável var
no bash. Eu posso atribuir um valor para isso. Por exemplo, vou fazer uma string:
var="Test"
Eu quero echo
o nome de var
, não o valor mantido por var
. (Eu posso fazer o último com echo $var
, mas eu realmente quero fazer o primeiro.)
A resposta a esta pergunta do SO diz para usar echo ${!var}
, mas quando eu faço isso eu ecoo 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 entre Hi e Bye , em vez de var . O que estou fazendo de errado?
Estou executando o bash 4.1.5 (1) no Ubuntu 10.04.4 .
Se você deseja simplesmente gerar um nome de variável estática, pode escapar o $
-sign:
echo \$var
Tags bash