Archiv verlassen und diese Seite im Standarddesign anzeigen : bash und while schleife
schlange
14-07-2004, 08:40
hi
ich möchte eine while schleife erstellen die von 1 - 100 zählt. aber es will nicht funktionieren. wo liegt der fehler?
hier das skript:
#!/bin/sh
i=1
while [ $i -le 100 ]
do
echo $i
i='expr $i + 1'
done
hier die fehlermeldung:
schlange@client2:~/cip$ ./download
1
./download: line 3: [: too many arguments
schlange@client2:~/cip$
bitte helfts mir ich verzweifle noch.
mfg schlange
for a in `seq 1 100`; do echo $a; done
schlange
14-07-2004, 09:29
danke msi für die schnelle anntwort. ist aber nicht das was ich will das skript soll auch die zahlen 1-100 ausgeben. bei deinen skript bekomme ich nur die ausgabe:
seq 1 100
wenn es mit der while schleife nicht geht ok. aber warum ist das skript bei selflinux so geschrieben?
mfg schlange
bash_azubi
14-07-2004, 09:40
Wenn du mit der bash arbeitest, geht das in jedem Fall:
for a in $(seq 1 100); do echo $a; done
Aber auch das Beispiel von msi funktioniert bei mir eindeutig :)
In deinem Beispiel sind die backticks nicht richtig geschrieben, es muß heißen
i=`expr $i + 1` oder in der bash eben i=$(expr $i +1 )
Du hast ' anstelle von ` geschrieben!
Alles was zwischen den beiden '' steht, wird von der shell ignoriert.
Also die Variable $i wird nicht zu der Zahl expandiert und der Ausdruck nicht mittels expr ausgeführt.
Ich hoffe das ist ein wenig klar geworden.
schlange
14-07-2004, 10:16
danke bash_azubi
das war der fehler. jetzt wird mir auch klar warum er bei mir die 1 ausgab und dann erst in der zeile mit while den fehler meldet. obwoh er sie schon mal abgearbeitet hatte.
giebt es gute online tut`s um das bash skript schreiben zu lernen?
mfg schlange
Für so ein aufwendiges Programmierproblem braucht man in jedem Fall eine leistungsfähige Programmiersprache, hier Perl:
perl -e 'print "$_\n" for(1 .. 100) '
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.