Ich lerne Bash Scripting und ich möchte eine Funktion alle 5 Sekunden für x Anzahl von Sekunden aufrufen. Das x wird durch das Befehlszeilenargument bestimmt, wenn das Skript ausgeführt wurde. Ich habe versucht zu wachen, aber es scheint für immer weiter zu gehen, ich habe nicht die Fähigkeit, nach x Sekunden zurückzukehren. Es könnte einen Schlafstil geben, aber es wirkt plump und ich muss mich mit lokalen Drift befassen. Gibt es eine elegante Lösung?Shell Script zum Ausführen des Befehls alle 5 Sekunden für x Anzahl der Sekunden
Mein Code:
#!/bin/bash
if [ $# -ne 1 ]; then # only 1 command line arg allowed
echo "Incorrect arguments"
exit 1
elif ! [[ $1 =~ ^[0-9]+$ ]]; then # arg must be digit
echo "Argument must be a positive number"
exit 1
fi
ask()
{
OUTPUT=$(snmpwalk -v2c -c community server oib)
CLEANOUTPUT="${OUTPUT:32}%"
echo $CLEANOUTPUT
}
#export -f ask
#watch -n5 ask
danke für den Tipp auf SECONDS –
Warum der 'Schlaf 5 || Pause "? Schlägt Sleep nicht 0 zurück, so dass Pause nie aufgerufen wird? Selbst wenn es hieß, was würde es tun, kurz bevor es fertig war? –
'sleep' gibt nicht null zurück, wenn sie abgebrochen wird oder wenn sie mit einem Zeitbezeichner aufgerufen wird, den die aktuelle Plattform als ungültig betrachtet, wie GNUs '0.5' oder' 1m', oder wenn die Zeitvariable aus irgendeinem Grund leer oder falsch ist –