Applications pratiques de la commande sleep
Maintenant que vous comprenez les bases de la commande sleep et comment l'utiliser avec des variables, explorons quelques applications pratiques. Ces exemples montrent comment la commande sleep est utilisée dans des scénarios du monde réel.
Création d'un simple minuteur de compte à rebours
Créons un minuteur de compte à rebours qui illustre une utilisation plus complexe de la commande sleep :
cd ~/project
touch countdown.sh
nano countdown.sh
Ajoutez le contenu suivant :
#!/bin/zsh
## Function to display a countdown
countdown() {
local seconds=$1
while [ $seconds -gt 0 ]; do
echo -ne "\rTime remaining: $seconds seconds "
sleep 1
((seconds--))
done
echo -e "\rCountdown complete! "
}
## Specify the countdown duration
echo "Starting a 5-second countdown:"
countdown 5
echo "Countdown script execution complete."
Enregistrez, quittez nano et rendez le script exécutable :
chmod +x countdown.sh
Exécutez le script :
./countdown.sh
Vous devriez voir un compte à rebours de 5 secondes à 0, avec la mise à jour du temps sur place :
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.
Simulation d'un processus avec indicateur de progression
Créons un script qui simule un processus long avec un simple indicateur de progression :
cd ~/project
touch progress.sh
nano progress.sh
Ajoutez le contenu suivant :
#!/bin/zsh
## Function to show a simple progress bar
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!"
}
## Run a process that takes 5 seconds with a progress indicator
show_progress 5
echo "Process completed successfully."
Enregistrez, quittez nano et rendez le script exécutable :
chmod +x progress.sh
Exécutez le script :
./progress.sh
Vous devriez voir une barre de progression qui se remplit en 5 secondes :
Starting process...
Progress: [##########] Done!
Process completed successfully.
Contrôle du débit des opérations
Dans cet exemple, nous allons montrer comment utiliser la commande sleep pour contrôler le débit des opérations, ce qui est utile pour limiter le taux d'appels API ou traiter de grands ensembles de données :
cd ~/project
touch rate_limit.sh
nano rate_limit.sh
Ajoutez le contenu suivant :
#!/bin/zsh
## Define the rate limit (operations per second)
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"
## Simulate 6 operations with rate limiting
for i in {1..6}; do
echo "Performing operation $i at $(date +%H:%M:%S.%N | cut -c1-12)"
## Simulate the operation
sleep 0.1
## Rate-limiting delay between operations
if [ $i -lt 6 ]; then
sleep $SLEEP_DURATION
fi
done
echo "All operations completed"
Enregistrez, quittez nano et rendez le script exécutable :
chmod +x rate_limit.sh
Exécutez le script :
./rate_limit.sh
Vous devriez voir les opérations être effectuées à un débit contrôlé :
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
Ces exemples montrent comment la commande sleep peut être utilisée dans des scénarios de scripting plus avancés. La capacité à contrôler le timing est un outil puissant dans le scripting shell qui permet de nombreuses applications pratiques.