So geben Sie eine Zeichenfolge einer anderen Zeichenfolgen-Shell-Variable wieder

So geben Sie eine Zeichenfolge einer anderen Zeichenfolgen-Shell-Variable wieder

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

verwandte Informationen