Angenommen, ich habe eine Variable var
in Bash. Ich kann ihr einen Wert zuweisen. Ich mache daraus beispielsweise einen String:
var="Test"
Ich möchte echo
den Namen von var
, nicht den Wert von var
. (Letzteres kann ich mit machen echo $var
, aber eigentlich möchte ich Ersteres.)
Die Antwort auf diese Frage von SOsagt, ich solle verwenden echo ${!var}
, aber wenn ich das mache, gibt echo nur eine leere Zeile zurück. Zum Beispiel dieses Bash-Skript
#!/bin/bash
echo "Hi"
var="Test"
echo ${!var}
echo "Bye"
gibt diese Ausgabe zurück:
Hi
Bye
mit nur einer Leerzeile dazwischenHalloUndTschüss, anstattvar. Was mache ich falsch?
Ich rennebash 4.1.5(1)AnUbuntu 10.04.4.
Antwort1
DerShell-Parametererweiterung ${!name@}oder${!name*}könnte den Zweck erfüllen,
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
Obwohl es machbar ist, kann ich mir den Nutzen davon nicht vorstellen ...
Antwort2
Wenn Sie einfach einen statischen Variablennamen ausgeben möchten, können Sie das $
-Zeichen escapen:
echo \$var