Hallo. In einem script moechte ich abfragen, ob eine Datei nicht mehr existiert. Also die Umkehrung zu while [ ! -e ~/file ] do sleep 5 done Ein "man bash" zeigt mir unter CONDITIONAL EXPRESSIONS immer nur ein "True if file exists" an. Geht das mit'ner einfachen Schleife nicht? Gruss Thomas -- Thomas Lichtenberg http://www.ThomasLichtenberg.de/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Thomas Lichtenberg wrote:
In einem script moechte ich abfragen, ob eine Datei nicht mehr existiert. Also die Umkehrung zu
while [ ! -e ~/file ] do sleep 5 done
Ein "man bash" zeigt mir unter CONDITIONAL EXPRESSIONS immer nur ein "True if file exists" an. Geht das mit'ner einfachen Schleife nicht?
Nimm "until" statt "while". "while" durchläuft die Schleife, solange die Bedingung wahr ist. "until" durchläuft die Schleife solange _bis_ die Bedingung wahr ist. Du könntest natürlich auch die Bedingung ändern: while [ -e ~/file ]; do sleep 5 done Jetzt wird die Schleife solange durchlaufen, bis die Datei gelöscht oder verschoben wurde. christian -- Bitte kein CC: bei Antwort an Mailingliste Etikette per Mail: To: mailings-suse@gmx.de Subject: send etikette http://www.ndh.net/home/schult/etikette.html --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Thomas, * Am 23.06.2000 um 20:31 Uhr schrieb Thomas Lichtenberg:
In einem script moechte ich abfragen, ob eine Datei nicht mehr existiert. Also die Umkehrung zu
while [ ! -e ~/file ] do sleep 5 done
vielleicht habe ich Deine Frage falsch verstanden, aber versuch doch mal das folgende: while [ -e ~/file ] do sleep 5 done echo "und nun is'e wech ;-)" MfG. Jürgen -- Wenn etwas schiefgehen kann, dann wird es auch schiefgehen. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de / --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Juergen Schwarting schrieb in 0,8K (36 Zeilen):
while [ -e ~/file ] do sleep 5 done
... wobei ich persoenlich die folgende Schreibweise vorziehe: while test -e ~/file ; do sleep 5 done -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Thomas Lichtenberg schrieb am 23.Jun.2000:
In einem script moechte ich abfragen, ob eine Datei nicht mehr existiert. Also die Umkehrung zu
while [ ! -e ~/file ] ^ Das ist doch schon die Umkehrung, die Du suchst. ! kehrt um. Wenn Du es nochmal umkehren willst, dann laß der Einfachheit halber das ! weg.
do sleep 5 done
Ein "man bash" zeigt mir unter CONDITIONAL EXPRESSIONS immer nur ein "True if file exists" an. Geht das mit'ner einfachen Schleife nicht?
Doch, sowohl if als auch while erwarten als Bedinung einen Befehl. Da könnte auch echo stehen, was aber keinen Sinn macht, oder ein grep, was durchaus Sinn macht. Wenn der Befehl eine 0 als Exitwert zurückgibt, so gilt das als True, wenn er aber was anderes zurückgibt, dann gilt es als False. So ist z.B if grep -s WORT Datei then ... durchaus Sinnvoll. Es wird der then-Teil ausgeführt, wenn grep was gefunden hat. Der evtl. else-Teil hingegen, wenn grep nicht fündig geworden ist. Das -s verhindert eine Ausgabe von grep. Meist wird als Befehl [...] bzw. test genommen. Das ist aber ein eigener Befehl und nicht Teil der if bzw. while Syntax, wenn auch ein shell-Builtin. Dieser Befehl gibt nur einen Exit-Code zurück, sonst nichst. Das ! ist Teil der test Syntax und ist es egal, ob es hinter if oder while steht. Man kann auch test ! -e irgendwas ohne ein if davor sagen. Du bekommst dann halt nur einen exit-Code, den Du Dir mit echo $? ansehen kannst. Aber nur unmittelbar nach diesen Befehl, weil ein neuer Befehl wieder einen eigenen erzeugen würde. $ cd / $ echo $? 0 $ cd /Muell bash: cd: Muell: Datei oder Verzeichnis nicht gefunden $ echo $? 1 $ echo $? 0 Beim zweitenmal wird eine 0 ausgegeben, weil das echo davor keinen Fehler hatte. Bernd -- Probleme mit dem Drucker? Schon die Druckercheckliste beachtet? http://localhost/doc/sdb/de/html/drucker-howto.html | Auch lesenswert: Oder schon das Drucker-HOWTO gelesen? | man lpr file://usr/doc/howto/de/DE-Drucker-HOWTO.txt.gz | Zufallssignatur 3 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (5)
-
B.Brodesser@online-club.de
-
cschult@gmx.de
-
Juergen_Schwarting@gmx.de
-
thomas@ThomasLichtenberg.de
-
weissel@netcologne.de