Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
latenite
- Beiträge: 688
- Registriert: 14.05.2007 01:04:23
Beitrag
von latenite » 03.11.2009 23:53:11
Hallo Leute
Wie kann ich eine Funktion z.b
für eine bestimmte Zeit laufen lassen?
mit -sleep X geht ja nix mehr?
Danke
-
Methusalix
Beitrag
von Methusalix » 04.11.2009 00:39:39
Hallo,
wenn Du mit "while true" eine Endlosschleife definierst, mußt Du Dir Gedanken über
die Abbruchbedingung machen - also über den Punkt, wann die Endlosschleife verlassen
werden soll. Das hängt wiederum mit dem zusammen, was Du genau vorhast. Soll ping
eine gewisse Zeit durchlaufen - also "ping -c anzahl" ? Oder wann soll ping beendet werden?
Gruß Methusalix
-
chrisbra
- Beiträge: 122
- Registriert: 19.10.2005 09:36:09
- Wohnort: Sachsen-Anhalt
-
Kontaktdaten:
Beitrag
von chrisbra » 04.11.2009 21:19:49
Das funktioniert in deinem Beispiel sowieso nicht, weil ping erstmal endlos läuft
Ansonsten kannst Du Dir natürlich sowas hier definieren:
Code: Alles auswählen
run () {
local seconds=$1;
shift;
while [ $seconds -gt 0 ]; do
seconds=$(($seconds - 1))
$@
sleep 1
done
}
und dann run 100 befehl
-
Meillo
- Moderator
- Beiträge: 9254
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 04.11.2009 23:50:19
Den Code in eine Subshell packen, diese in den Hintergrund schicken, und ihre PID abfragen. Dann ein sleep mit gewünschter Zeit starten und danach ein kill mit der PID.
Code: Alles auswählen
( while : ; do echo foo ; sleep 1 ; done ) & sleep 8 ; kill $!
Bei ping ist aber `-c' die beste Wahl.
Use ed once in a while!