it-swarm.com.de

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

Angenommen, ich habe eine Variable var in bash. Ich kann ihm einen Wert zuweisen. Zum Beispiel werde ich daraus einen String machen:

var="Test"

Ich möchte echo den Namen von var, nicht den Wert von var. (Letzteres kann ich mit echo $var Machen, aber ich möchte eigentlich Ersteres machen.)

Die Antwort auf diese Frage von SO sagt, dass echo ${!var} Verwendet werden soll, aber wenn ich das tue, gibt das 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 zwischen Hi und Bye anstelle von var . Was mache ich falsch?

Ich verwende bash 4.1.5 (1) auf Ubuntu 10.04.4 .

18
Andrew

Die Shell-Parametererweiterung $ {! Name @} oder $ {! Name *} könnte Mache den Trick,

$ foo=bar
$ var_name=(${[email protected]})
$ echo $var_name" = "$foo
foo = bar

Obwohl machbar, kann ich mir den Nutzen davon nicht vorstellen ...

24
xae

Wenn Sie einfach einen statischen Variablennamen ausgeben möchten, können Sie das $ - Zeichen umgehen:

echo \$var
30
mjturner