
Wir möchten den Wert einer Shell-Variablen ausgeben, die einen anderen Variablen-String im Variablennamen hat. Beispiel:
wir wollen folgende Ausgabe
var1=1
var2=2
Wir haben verschiedene Formen ausprobiert, die der folgenden ähneln, aber sie funktionieren nicht
for j in {1..2}
do
export var${j}=$j
echo "var${j}=${var${j}}"
done
Wie setzen und geben wir Shellvariablen aus, die eine variable Zeichenfolge in ihrem Namen enthalten?
Danke
Antwort1
In Bash (oder KSH) können Sie die Indirektionssyntax verwenden, ${!var}
um auf die Variable zu verweisen, deren Name der Wert von ist $var
. Es muss der vollständige Name sein, also müssen Sie es folgendermaßen machen:
for j in {1..2}; do
# This could have been declare instead of export if you don't need
# to export the variable.
export var${j}=$j
varname=var$j
echo "var${j}=${!varname}"
done
Antwort2
Dudürfentun Sie dies, wie @rici es erklärt hat, aber es ist selten eine gute Idee. Sie könnten dasselbe mit einer einfacheren Syntax erreichen, wenn Sie stattdessen Arrays verwenden:
var=("1" "2");
for j in {0..1}
do
echo "var$j : ${var[$j]}"
done