Hallo Liste ich habe ein Problem das schwierig zu beschreiben ist. Ich versuch's trotzdem. i=1 sei eine Zählvariable mit Startwert 1 TMP1=/tmp/eins und TMP2=/tmp/zwei seien zwei Variablen, deren Namen auf eine fortlaufende Zahl endet mit beliebigem Inhalt. Jetzt soll $TMP1, $TMP2, $TMP10000 in einer Schleife ausgegeben werden. Dazu zähle ich i hoch und versuche quasi sowas wie $"TMP$i" auszugeben. Leider finde ich keine Möglichkeit, den Namen der Variablen, die ausgegeben werden soll, variabel anzugeben. Wenn ich ein echo $((TMP$i)) ausführe, kriege ich ein -bash: /tmp/eins: syntax error: operand expected (error token is "/tmp/eins") zurück. Da ist zumindest der richtige Wert "irgendwie" drin. Natürlich mit Syntax-error ... Hat jemand eine Idee? Ich hoffe man kann das Problem so einigermaßen verstehen. Grüße Dominik -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Am Mittwoch, 28. Juni 2006 11:31 schrieb Dominik Klein:
Hallo Liste
ich habe ein Problem das schwierig zu beschreiben ist. Ich versuch's trotzdem.
i=1 sei eine Zählvariable mit Startwert 1 TMP1=/tmp/eins und TMP2=/tmp/zwei seien zwei Variablen, deren Namen auf eine fortlaufende Zahl endet mit beliebigem Inhalt.
Jetzt soll $TMP1, $TMP2, $TMP10000 in einer Schleife ausgegeben werden.
Das vielleicht? TMP=$(eval echo "\$TMP$i") Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Nach etlicher Google-Quälerei (vor und nach der Frage-Mail) habe ich sowas auch vor einer Minute gefunden. Danke schön trotzdem. eval echo \${TMP$i}
Das vielleicht? TMP=$(eval echo "\$TMP$i")
Al
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Am Mittwoch, 28. Juni 2006 11:31 schrieb Dominik Klein:
i=1 sei eine Zählvariable mit Startwert 1 TMP1=/tmp/eins und TMP2=/tmp/zwei seien zwei Variablen, deren Namen auf eine fortlaufende Zahl endet mit beliebigem Inhalt.
Jetzt soll $TMP1, $TMP2, $TMP10000 in einer Schleife ausgegeben werden.
Hallo Dominik, so funktiniert das bei mir (angeblich für Bash-Version > 2.0): ---- #!/bin/bash TMP1=/tmp/eins TMP2=/tmp/zwei for i in `seq 1 2` do TMP_VAR=TMP${i} echo ${!TMP_VAR} done ---- Die wichtigen Zeilen sind natürlich die beiden innerhalb der Schleife. ${!TMP_VAR} gibt den Wert der Variablen mit dem Namen des Wertes von TMP_VAR aus. Ich weiß auch nicht, ob es ohne die temporäre Variable geht. Habe ich spontan nicht hinbekommen. Gruß, Achim -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo
i=1 sei eine Zählvariable mit Startwert 1 TMP1=/tmp/eins und TMP2=/tmp/zwei seien zwei Variablen, deren Namen auf eine fortlaufende Zahl endet mit beliebigem Inhalt.
Jetzt soll $TMP1, $TMP2, $TMP10000 in einer Schleife ausgegeben werden.
Dazu zähle ich i hoch und versuche quasi sowas wie $"TMP$i" auszugeben. Leider finde ich keine Möglichkeit, den Namen der Variablen, die ausgegeben werden soll, variabel anzugeben.
2 Dinge fallen mir ein: - die Bash kennt Arrays (siehe man bash unter ARRAY) - eval, vielleicht hilft ja sowas: for i in `seq 1 10` do eval "a$i"=$i # Zuweisung an "array"-element-bariable a$i done for i in `seq 1 10` do echo $((a$i)) # Ausgeben der "array"-element-variablen a$i done Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
participants (4)
-
Achim Schäfer
-
Al Bogner
-
Dominik Klein
-
Dr. Jürgen Vollmer