• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] dynamische Variablennamen in einer Schleife

fabmo

Member
Hallo,

ich brauche mal eure Hilfe bei dem folgenden Programm.
Ich möchte in einer for Schleife den Vriablennamen dynamisch erzeugen sprich in abhängigkeit der Schleigenvariable. Ich dachte an sowas:

Code:
for ((i=1; i<$#; i++))
do
VARIABLE$i=$1
shift
done
leider funktioniert das nicht, ich nehme mal an, dass ich bei
VARIABLE$i=$1 was nicht richtig gemacht habe.

Danke für hilfe
 

regexer

Advanced Hacker
fabmo schrieb:
leider funktioniert das nicht, ich nehme mal an, dass ich bei VARIABLE$i=$1 was nicht richtig gemacht habe.
Das funktioniert auch so nicht. Entweder den Befehl eval oder ein Array nehmen. Letzteres ist eleganter.

Für eval siehe man bashbuiltins
Für arrays siehe man bash
 
OP
F

fabmo

Member
Danke...

Ach mit eval geht es, weil die Variablen ersetzt werden und dann wir das ganze an eval übergeben und eval führ die Zeil dann aus.. Habe ich richtig verstanden oder?

Ja stimmt ein Array wäre wohl schlauer.... Mal sehen wies läuft.
 

regexer

Advanced Hacker
fabmo schrieb:
Ach mit eval geht es, weil die Variablen ersetzt werden und dann wir das ganze an eval übergeben und eval führ die Zeil dann aus.. Habe ich richtig verstanden oder?
eval heißt in langform "evaluieren". Das ist ein Ausdruck dafür, dass die Shell Variablennamen ersetzt, Backslashes auflöst usw und das macht sie sowieso immer einmal. Wenn man jedoch "eval" angibt, macht das die Shell 2x.

Allerdings kann das in manchen Fällen zu ziemlich hässlichen Konstukten führen. Wenn ich z.B. an deinen Anwendungsfall mit dem sed denke ( http://www.linux-club.de/ftopic87465.html ) ...
Deswegen der Rat: Wenn möglich, ein Array nehmen!
 
OP
F

fabmo

Member
notoxp schrieb:
Wenn ich z.B. an deinen Anwendungsfall mit dem sed denke ( http://www.linux-club.de/ftopic87465.html ) ...
Deswegen der Rat: Wenn möglich, ein Array nehmen!


.....Das habe ich am Ende dann doch mit " | grep -o Dose0$SD_NR....`
gelöst.
Ich hab mich mal in die Arrays eingelesen.... Ja ihr habt recht eval usw ist in dem Fall wirklich nicht so elegent.

Nochmals danke
 
Oben