Endlosschleife mit if ... fi erzeugen ?

Post Reply
Message
Author
shell

Endlosschleife mit if ... fi erzeugen ?

#1 Post by shell »

hi ...

ich möchte eine if-schleife erzeugen, die kontinuierlich prüft, ob eine Variable einen bestimmten wert hat

z.Bsp:
#!/bin/sh

SEC=`date | cut -c18-19`
if [ "$DAT"="00" ]; then
echo -e "\<!--no-->007:&copy;<!--char-->"
fi
#nun würde ich gerne wieder zu SEC=`...... springen wollen
Das Programm soll im Hintergrund laufen und Stündlich (hier zur vollen Minute) einen Piepton ausgeben.

trinity
Posts: 821
Joined: 12. Oct 2001 10:04

Re: Endlosschleife mit if ... fi erzeugen ?

#2 Post by trinity »

wäre ein cronjob nicht sinnvoller?
Last edited by trinity on 15. Nov 2001 11:00, edited 1 time in total.
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)

shell

Re: Endlosschleife mit if ... fi erzeugen ?

#3 Post by shell »

nein .. in diesem falle nicht <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
brauche es sekundengenau

trinity
Posts: 821
Joined: 12. Oct 2001 10:04

Re: Endlosschleife mit if ... fi erzeugen ?

#4 Post by trinity »

dann solltest du wohl auch eine schleife verwenden. mit if erzeugt man keine schleifen, sondern mit while
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)

shell

Re: Endlosschleife mit if ... fi erzeugen ?

#5 Post by shell »

ich würde mich ehrlich über eine hilfreiche antwort freuen

Rossi

Re: Endlosschleife mit if ... fi erzeugen ?

#6 Post by Rossi »

while ["1" = "1"]; do
if ["$DAT ....
fi
done

Wäre eine endlosschleife. Allerdings nicht mit "if"

Jochen

Re: Endlosschleife mit if ... fi erzeugen ?

#7 Post by Jochen »

Ihhhh, Polling auf einem Multitasking-System?!? Na ja...

Sekundengenauigkeit ist mit Shell-Mitteln nicht zu errreichen. Entweder du lässt tatsächlich die Schleife die ganze Zeit ungebremst laufen und damit auch Rechenzeit fressen, die andere Prozesse nutzbringend anlegen könnten, oder Du wartest im Schleifenkörper mittels "sleep 1" eine Sekunde. Allerdings hat das das Problem, dass ja nach Auslastung des Systems "sleep 1" ggf. erst nach vielleicht 1,2 Sekunden zurückkommt. Damit könnte es passieren, dass Du einmal genau die Nuller-Sekunden überschlägst.

Was Du machen wolltest, könnte man also am besten so lösen:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
while true; do
if [ $(date "+%S") == "00" ] ; then
echo "Piep!"
else
sleep 1
fi
done
</font><hr></pre></blockquote>

Deine Programmausschnitte haben immer so etwas herzzerreissend unvollständiges... SEC wird gesetzt, DAT wird abgefragt. Fehler? Feature? Design?

Jochen

shell

Re: Endlosschleife mit if ... fi erzeugen ?

#8 Post by shell »

danke jochen ;)

ich schreibe date in eine Variable und schneide es zurecht, so daß TIME="00:00:00" .. das frag ich in ner schleife ab ...
Funktioniert perfekt und auch genau, da die schleiße ja sogar mehrmals pro sekunde durchläuft

Jochen

Re: Endlosschleife mit if ... fi erzeugen ?

#9 Post by Jochen »

Schau noch mal in die man-Page zu date. Mit den Format-Feldern kannst Du Dir das Zurechtschneidern der Date-Ausgabe mittels cut u.ä. sparen.

Jochen

Post Reply