Hallo Liste, ich möchte gerne in einem Script Variablenamen variabel erzeeugen, eir in folgendem Beispiel: [snip] #!/bin/bash for i in `seq 1 3` do mm$i=$i done echo "$mm1 $mm2 $mm3" exit 0 [snip] Ich möchte hier mm1=1, mm2=2 und mm3=3 haben. Wenn ich das wie oben laufen lassen, bekomme ich die Fehler: [snip] ./times-test.sh: line 43: mm1=1: command not found ./times-test.sh: line 43: mm2=2: command not found ./times-test.sh: line 43: mm3=3: command not found [snip] Welche / wer hat 'ne Idee? Liebe Grüße Alexander -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Alexander, Alexander Beck-Ratzka schrieb:
Hallo Liste,
ich möchte gerne in einem Script Variablenamen variabel erzeeugen, eir in folgendem Beispiel:
[snip]
#!/bin/bash for i in `seq 1 3` do mm$i=$i done
echo "$mm1 $mm2 $mm3" exit 0 [snip]
Versuchs mal mit eval mm$i=$i Hat bei mir grad funktioniert: abirndt@UBUNTUNB:~/tmp$ ./test.bash ++ seq 1 3 + for i in '`seq 1 3`' + eval mm1=1 ++ mm1=1 + for i in '`seq 1 3`' + eval mm2=2 ++ mm2=2 + for i in '`seq 1 3`' + eval mm3=3 ++ mm3=3 + echo '1 2 3' 1 2 3 + exit 0 Gruß Axel -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 13 Okt 2008, Axel Birndt schrieb:
Alexander Beck-Ratzka schrieb:
ich möchte gerne in einem Script Variablenamen variabel erzeeugen, eir in folgendem Beispiel:
[snip]
#!/bin/bash for i in `seq 1 3` do mm$i=$i done
echo "$mm1 $mm2 $mm3" exit 0 [snip]
Versuchs mal mit
eval mm$i=$i
eval ist gefährlich, sobald im evaluierten Dinge von aussen kommen können. Für den Zugriff sollte man in neueren bash "${!VAR}" verwenden. Also z.B.: for i in $(seq 1 3); do t="mm$i"; echo "${!t}"; done Oder am besten gleich eine Arrayvariable: for i in $(seq 1 3); do mm[$i]="$i"; done echo "${mm[@]}" # oder echo "${mm[1]}" etc. HTH, -dnh -- BE MAD! IT HELPS! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 13. Oktober 2008 14:25:42 schrieb Alexander Beck-Ratzka: Hallo Alexander,
ich möchte gerne in einem Script Variablenamen variabel erzeeugen, eir in folgendem Beispiel:
[snip]
#!/bin/bash for i in `seq 1 3` do mm$i=$i done
echo "$mm1 $mm2 $mm3" exit 0 [snip]
Du beschreibst ein Array und das musst Du dann auch als solches auslesen: (so aus dem Kopf...) for i in `seq 1 3`; do mm[$i]=$i done echo "${mm[1]} ${mm[2]} ${mm[3]}" MfG Th. Moritz -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Alexander Beck-Ratzka
-
Axel Birndt
-
David Haller
-
Thomas Moritz