funktion für ZEIT -x laufen lassen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

funktion für ZEIT -x laufen lassen

Beitrag von latenite » 03.11.2009 23:53:11

Hallo Leute

Wie kann ich eine Funktion z.b

Code: Alles auswählen

function klopfen {
while true; do
ping ich.de
done
}
für eine bestimmte Zeit laufen lassen?
mit -sleep X geht ja nix mehr?
Danke

Methusalix

Re: funktion für ZEIT -x laufen lassen

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:

Re: funktion für ZEIT -x laufen lassen

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
Meine Whishlist
:wq!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: funktion für ZEIT -x laufen lassen

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!

Antworten