Supongamos que tengo una variable var
en bash. Puedo asignarle un valor. Por ejemplo, lo convertiré en una cadena:
var="Test"
Quiero echo
el 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