Linux-Script: Variable mit fortlaufender Nummer

Post Reply
Message
Author
FireFox

Linux-Script: Variable mit fortlaufender Nummer

#1 Post by FireFox »

Mahlzeit

Bin gerade über einem kleinen Script und hab eben ein Brett vorm Kopf.

Ich hab eine while Schleife und in der möchte ich variablen definieren lassen mit fortlaufender Nummer.

< snip >
zeile=1
while [ $zeile -le 5 ]
do
var_$zeile=argument_$zeile
zeile=$[$zeile+1]
done
< / snap >

Da bringt er ne Fehlermeldung
var_1=argument_1 command not found
weil der Variablenname eben auch schon eine Variable enthält.

Hmmmm.
Irgendwer eine Ahnung??

tuxracer
Posts: 11
Joined: 15. Apr 2004 21:36
Location: Darmstadt
Contact:

#2 Post by tuxracer »

> zeile=$[$zeile+1]

Probier mal let zeile=zeile+1
echo 0x4672696e6b2072756c657321|xxd -r

kanonenfutter

#3 Post by kanonenfutter »

> var_$zeile=argument_$zeile

für sowas brauchst du arrays, du kannst das nicht einfach so zuweisen. schau dir mal in "man bash" den abschnitt "arrays" an.
für das loop kannst du übrigens auch "seq" verwenden. for zeile in $(seq 1 5) ; do .......; done

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#4 Post by jochen »

Arrays sind in der bash sicherlich sie bessere Variante, aber wenn man sh-kompatibel bleiben muss, kann man eval verwenden:

Code: Select all

eval  var_$zeile=argument_$zeile
Das bewirkt, dass die Shell nach der ersten Auswertung (die, wie Dir die Fehlermeldung ja sagt, "var_1=argument_1" liefert) noch eine zweite Auswertung startet. Also wird die Prüfung, ob Variablen zu setzen oder einzufügen sind usw. noch mal gestartet und die Anweisung als Setzen der Variable var_1 auf den Wert argument_1 interpretiert.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply