sleep in awk

flappinski

flappinski

Foren As
Hallo, wenn ich "sleep 10" mit Strg-C abbreche, habe ich einnen Exit-Status von 120, wie erwünscht.
Wenn ich aber folgendermassen innerhalb eines Awk-Scripts starte, bekomme ich immer 0! Mache ich da was falsch? Bei anderen System-Befehlen innerhalb von awk funktioniert das doch auch bei mir?

if (system("sleep 10")!=0)) exit1;


das problem an der sache ist, dass ich aus einer Schleife nicht rauskomme...

gibt es eine andere Möglichkeit, innerhalb einew awk-scriptes zu warten?
 
Hallo,

if (system("sleep 10")!=0)) exit1;
das kann (auch wenn nicht weiß wo Du das verwendest) schon mal nicht
funktionieren exit1 ist kein Kommando...aber damit sollten wir uns
nicht aufhalten. Generell: Ein Programm bzw. Skript absichtlich "schlafen
zu legen" sollte in den meisten Fällen vermieden werden.
Beschreib doch bitte mal genauer, was Du vor hast, dann kann Dir sicherlich
besser geholfen werden - für meine Begriffe ist Deine Angabe zu dürftig :think:
 
o.k. sorry:
also, ich es gibt Dateien, auf die mein Programm nur dann zugreifen soll, wenn nicht ein anderer User mit dem gleichen Programm gleichzeitig zugreift.
Ich schreibe also ein Lock-File in das /Tmp-Verzeichnis. Wenn dieses existiert (also vom anderen User), dann soll das Programm mal für ein paar Sekunden warten und es dann nochmal versuchen.
das alles funktionert auch wunderbar (mit dem sleep-Befehl), jetzt kommt der Haken:
wenn ich das Awk-Script abbbrechen will, solange es wartet, bricht immer nur der sleep-Befehl ab, aber nicht das Awk-Skript. Deshalb habe ich versucht, den Exit-Statuts von dem System-Befehl zu testen um eventuell das Awk-Script zu beenden.
Jetzt habe ich wahrscheinlich endgültig alle Klarheiten beseitigt.
Probiert es doch bitte mal folgendes in der bash:

echo . | awk '{system("sleep 20"); print "hat nicht geklappt"}'

könnt ihr das Skript abbrechen?

Danke,
Stephan
 
Hallo
$ echo . | awk '{system("sleep 20"); print "hat nicht geklappt"}'
hat nicht geklappt
Habe ich sauber abgebrochen mit Cntrl+C.
Ich kann sleep nicht abbrechen, sondern nur das gesamte awk-Script.

Welches OS verwendest du?

Gruß Wolfgang
 
ubuntu 6.10, gibt es da ein problem?

aber dass es bei Dir funktioniert, beruhigt mich wenigstens in meiner awk-script-schreiber-ehre

MOMENT: wenn bei dir "hat nicht geklappt" erscheint, so wie in dem Zitat, dann hast Du doch das Skript nicht abgebrochen, oder?
 
Hallo
Ich bin nicht so der awk-fan, verwende dafür immer perl.

Natürlich ist das ein Irrtum meinerseits. Ich habe sleep zwar unterbrochen, aber dadurch ist das Script zum Ende gekommen.
Du kannst das awk-Script nicht unterbrechen, weil sleep ein Subprozess von awk ist, den awk nicht zu überwachen (returnwert) scheint.
Warum sleep allerding keinen Returnstatus ausgibt, kann ich momentan auch nicht sagen.
Immerhin kannst du mit mawk das gesamte Script abbrechen.
Schau dir auch mal das hier an, was bei mir unter awk nicht geht!

Hier wird gawk verwendet!
http://sunsite.ualberta.ca/Documentation/Gnu/gawk-3.0.6/html_node/gawk_167.html

Gruß Wolfgang
 

Ähnliche Themen

Grafische Anzeige der Temperatur

HandbrakeCLI Shell Skript

verzeichniss suche funktioniert nicht

Prozesskommunikation mit PIPES - wie funktioniert das?

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Zurück
Oben