En bash, ¿cómo puedo hacer eco del nombre de la variable, no del valor de la variable?

En bash, ¿cómo puedo hacer eco del nombre de la variable, no del valor de la variable?

Supongamos que tengo una variable varen bash. Puedo asignarle un valor. Por ejemplo, lo convertiré en una cadena:

var="Test"

Quiero echoel nombre de var, no el valor que tiene var. (Puedo hacer lo último con echo $var, pero en realidad quiero hacer lo primero).

La respuesta a esta pregunta de SOdice usar echo ${!var}, pero cuando lo hago, hago eco y devuelve una línea en blanco. Por ejemplo, este script bash

#!/bin/bash

echo "Hi"
var="Test"
echo ${!var}
echo "Bye"

devuelve esta salida:

Hi

Bye

con solo una línea en blanco entreHolayAdiós, en lugar devar. ¿Qué estoy haciendo mal?

Estoy corriendofiesta 4.1.5(1)enUbuntu 10.04.4.

Respuesta1

Elexpansión de parámetros de shell ${!nombre@}o${!nombre*}podría hacer el truco,

$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar

Aunque es factible, no puedo imaginar la utilidad de esto...

Respuesta2

Si desea simplemente generar un nombre de variable estática, puede escapar del $signo -:

echo \$var

información relacionada