Praktische Anwendungen des Sleep-Befehls
Nachdem Sie nun die Grundlagen des sleep
-Befehls und seine Verwendung mit Variablen verstehen, wollen wir einige praktische Anwendungen untersuchen. Diese Beispiele zeigen, wie der sleep
-Befehl in realen Szenarien eingesetzt wird.
Erstellen eines einfachen Countdown-Timers
Erstellen wir einen Countdown-Timer, der eine komplexere Verwendung des sleep
-Befehls demonstriert:
cd ~/project
touch countdown.sh
nano countdown.sh
Fügen Sie den folgenden Inhalt hinzu:
#!/bin/zsh
## Funktion zur Anzeige eines Countdowns
countdown() {
local seconds=$1
while [ $seconds -gt 0 ]; do
echo -ne "\rTime remaining: $seconds seconds "
sleep 1
((seconds--))
done
echo -e "\rCountdown complete! "
}
## Festlegen der Countdown-Dauer
echo "Starting a 5-second countdown:"
countdown 5
echo "Countdown script execution complete."
Speichern Sie die Datei, verlassen Sie nano und machen Sie das Skript ausführbar:
chmod +x countdown.sh
Führen Sie das Skript aus:
./countdown.sh
Sie sollten einen Countdown von 5 Sekunden auf 0 sehen, wobei die Zeit direkt aktualisiert wird:
Starting a 5-second countdown:
Time remaining: 5 seconds
Time remaining: 4 seconds
Time remaining: 3 seconds
Time remaining: 2 seconds
Time remaining: 1 seconds
Countdown complete!
Countdown script execution complete.
Simulieren eines Prozesses mit Fortschrittsindikator
Erstellen wir ein Skript, das einen langlaufenden Prozess mit einem einfachen Fortschrittsindikator simuliert:
cd ~/project
touch progress.sh
nano progress.sh
Fügen Sie den folgenden Inhalt hinzu:
#!/bin/zsh
## Funktion zur Anzeige einer einfachen Fortschrittsleiste
show_progress() {
local duration=$1
local steps=10
local step_duration=$(echo "scale=2; $duration / $steps" | bc)
echo "Starting process..."
echo -n "Progress: ["
for i in {1..10}; do
sleep $step_duration
echo -n "#"
done
echo "] Done!"
}
## Ausführen eines 5-sekündigen Prozesses mit Fortschrittsindikator
show_progress 5
echo "Process completed successfully."
Speichern Sie die Datei, verlassen Sie nano und machen Sie das Skript ausführbar:
chmod +x progress.sh
Führen Sie das Skript aus:
./progress.sh
Sie sollten eine Fortschrittsleiste sehen, die sich über 5 Sekunden füllt:
Starting process...
Progress: [##########] Done!
Process completed successfully.
Steuern der Ausführungsrate von Operationen
In diesem Beispiel zeigen wir, wie der sleep
-Befehl zur Steuerung der Ausführungsrate von Operationen verwendet werden kann. Dies ist nützlich, um die Anzahl von API-Aufrufen zu begrenzen oder große Datensätze zu verarbeiten:
cd ~/project
touch rate_limit.sh
nano rate_limit.sh
Fügen Sie den folgenden Inhalt hinzu:
#!/bin/zsh
## Definieren der Rate-Limitierung (Operationen pro Sekunde)
OPERATIONS_PER_SECOND=2
SLEEP_DURATION=$(echo "scale=3; 1 / $OPERATIONS_PER_SECOND" | bc)
echo "Performing operations at a rate of $OPERATIONS_PER_SECOND per second"
echo "Each operation will be followed by a $SLEEP_DURATION second delay"
## Simulieren von 6 Operationen mit Rate-Limitierung
for i in {1..6}; do
echo "Performing operation $i at $(date +%H:%M:%S.%N | cut -c1-12)"
## Simulieren der Operation
sleep 0.1
## Rate-Limitierungs-Pause zwischen den Operationen
if [ $i -lt 6 ]; then
sleep $SLEEP_DURATION
fi
done
echo "All operations completed"
Speichern Sie die Datei, verlassen Sie nano und machen Sie das Skript ausführbar:
chmod +x rate_limit.sh
Führen Sie das Skript aus:
./rate_limit.sh
Sie sollten sehen, dass die Operationen mit einer kontrollierten Rate ausgeführt werden:
Performing operations at a rate of 2 per second
Each operation will be followed by a 0.500 second delay
Performing operation 1 at 10:30:45.12
Performing operation 2 at 10:30:45.72
Performing operation 3 at 10:30:46.32
Performing operation 4 at 10:30:46.92
Performing operation 5 at 10:30:47.52
Performing operation 6 at 10:30:48.12
All operations completed
Diese Beispiele zeigen, wie der sleep
-Befehl in fortschrittlicheren Skripting-Szenarien eingesetzt werden kann. Die Fähigkeit, die Zeitsteuerung zu kontrollieren, ist ein mächtiges Werkzeug in der Shell-Skripting, das viele praktische Anwendungen ermöglicht.