Wie kann ich in Bash den Variablennamen und nicht den Variablenwert wiedergeben?

Wie kann ich in Bash den Variablennamen und nicht den Variablenwert wiedergeben?

Angenommen, ich habe eine Variable varin Bash. Ich kann ihr einen Wert zuweisen. Ich mache daraus beispielsweise einen String:

var="Test"

Ich möchte echoden 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

verwandte Informationen