Ich versuche, einen einfachen Wert für $ AR1_p1 zu drucken, aber die Variable $ i wird nicht ausgewertet.
for i in 1 2 3 4
do
AR1_p1=22
AR1_p2=23
AR1_p3=24
AR1_p3=25
echo $AR1_p$i
done
Es ist wie eine dynamische Verkettung. Irgendwelche Vorschläge, wie man das behebt?.
Antworten:
Diese Schleife funktioniert. Andernfalls verwenden Sie Arrays.
quelle
Sie können dafür indirekte Bash-Referenzen verwenden :
quelle
Gemäß den vorgeschlagenen Kommentaren sollte ein Array verwendet werden:
quelle
for
Schleife ist bereits eine Array-Zuordnung ...Verwenden Sie eval:
Echo erweitert nur $ i. Wenn dieser Ausdruck eval erreicht, ist er wie folgt: $ AR1_p1. Eval versucht zu bewerten und gibt das Ergebnis.
quelle
eval
ist normalerweise eine schlechte Idee. In diesem Beispiel verarbeiten Sie natürlich keine externen Eingaben, aber wenn Sie dies jemals tun, müssen Sie sehr sicher sein, dass Sie alle Daten bereinigen, an die Sie übergebeneval
. (Was schwer ist. Sehr schwer. Besser, es einfach zu überspringen.)POSIXly:
Ein bisschen weniger chaotisch, vielleicht:
Immer noch POSIX, aber weitaus vernünftiger:
quelle