bash: Schleifenproblem...
Hallo zusammen Ich habe ein Problem mit bash. Wenn ich folgenden Code ausführe.... STRINGS="gaga jaja kaka lala nana mama haha tata zaza iaia" for STRING in $STRINGS do if [ $STRING="haha" ]; then echo "$STRING" fi done ....bekomme ich folgende Ausgabe.... gaga jaja kaka lala nana mama haha tata zaza iaia ....lieber währe mir nur.... haha ....wieso reagiert bash so? Muss das so sein? Was muss ich anders machen? Vielen Dank schon im Voraus Raffaele --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Raffaele Sandrini wrote:
Hallo zusammen
Ich habe ein Problem mit bash. Wenn ich folgenden Code ausführe....
STRINGS="gaga jaja kaka lala nana mama haha tata zaza iaia"
for STRING in $STRINGS do if [ $STRING="haha" ]; then
Die blanks um das '=' fehlen. if [ $STRING = "haha" ]; then wäre richtig gewesen.
....lieber währe mir nur....
haha
....wieso reagiert bash so? Muss das so sein?
[ $a="b" ] ruft das Programm '[' mit den Optionen $a="b" ] auf (2 Optionen!). Das Programm '[' erwartet aber 4 Optionen, d.h. $a = "b" ]
Was muss ich anders machen?
Siehe oben. Ralf --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Ralf Corsepius schrieb am 25.Aug.2000:
Raffaele Sandrini wrote:
Das Programm '[' erwartet aber 4 Optionen, d.h. $a = "b" ]
Nein. [ erwartet als einziges Argument immer ]. Sind ansonsten keine weitere Argumente vorhanden, so gilt das Ergebnis als falsch und es wird ein Exitcode von 1 zurückgegeben. Ist wie oben nur ein einziges weiteres Argument vorhanden, dann gilt das Ergebnis grundsätzlich als richtig, und es wird eine 0 zurückgegeben. Sind außer dem ] noch zwei oder mehr Argumente vorhanden, dann wird es kompliziert. Dann wird interprtiert. Z.B wenn noch drei weitere Argumente vorhanden sind und das zweite ein = ist, so wird eine 0 zurückgegeben, falls das erste und das dritte Argument übereinstimmen, sonst eine 1. Ergo, a=b ist Syntaktisch richtig, liefert aber nicht unbedingt was man erwartet. Wenn man daß haben will, muß man a = b sagen. Aber das Problem hatte ich bekanntermaßen unlängst auch. ;)) Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: file://usr/doc/susehilf/index.html | mit Apache: http://localhost/doc/susehilf/index.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (4)
-
B.Brodesser@online-club.de
-
corsepiu@faw.uni-ulm.de
-
hans@lengerke.org
-
rasa@gmx.ch