sleep コマンドの実用的なアプリケーション
これで sleep
コマンドの基本と変数を使った使い方が理解できたので、いくつかの実用的なアプリケーションを探ってみましょう。これらの例は、sleep
コマンドが実際のシナリオでどのように使用されるかを示しています。
シンプルなカウントダウンタイマーの作成
sleep
コマンドのより複雑な使い方を示すカウントダウンタイマーを作成しましょう。
cd ~/project
touch countdown.sh
nano countdown.sh
次の内容を追加します。
#!/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."
保存して nano を終了し、スクリプトを実行可能にします。
chmod +x countdown.sh
スクリプトを実行します。
./countdown.sh
5 秒から 0 までのカウントダウンが表示され、時間がその場で更新されるはずです。
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.
進捗インジケーター付きのプロセスのシミュレーション
シンプルな進捗インジケーター付きの長時間実行されるプロセスをシミュレートするスクリプトを作成しましょう。
cd ~/project
touch progress.sh
nano progress.sh
次の内容を追加します。
#!/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."
保存して nano を終了し、スクリプトを実行可能にします。
chmod +x progress.sh
スクリプトを実行します。
./progress.sh
5 秒間で埋まる進捗バーが表示されるはずです。
Starting process...
Progress: [##########] Done!
Process completed successfully.
操作のレート制御
この例では、sleep
コマンドを使用して操作のレートを制御する方法を示します。これは、API 呼び出しのレート制限や大規模なデータセットの処理に役立ちます。
cd ~/project
touch rate_limit.sh
nano rate_limit.sh
次の内容を追加します。
#!/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"
保存して nano を終了し、スクリプトを実行可能にします。
chmod +x rate_limit.sh
スクリプトを実行します。
./rate_limit.sh
操作が制御されたレートで実行されるのが見えるはずです。
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
これらの例は、sleep
コマンドがより高度なスクリプトシナリオでどのように使用できるかを示しています。タイミングを制御する能力は、多くの実用的なアプリケーションを可能にするシェルスクリプトの強力なツールです。