LinuxのBashシェルスクリプトでsleepに一定時間休みの方法を紹介します。
1. Syntax
sleepコマンドは、引数として入力された時間だけsleepします。
sleep 'time'
時間は次のように数字+ s/m/h
として定義することができます。基本的には単位がsecondので、 1
を入力すると、1s
で処理されます。
- 1s:1秒をの
- 1m:1分をの
- 1h:1時間をの
- 10m 10s:10分10秒をの
- 1h 10m 10s:1時間10分10秒をの
2. sleepの例
次の例は、3秒sleepする例です。時間を一緒に出力してsleepがうまく動作していることを確認することができます。
#!/bin/bash
time=`date +"%H:%M:%S"`
echo "Start at $time"
echo "wait for 3 seconds"
sleep 3s
time=`date +"%H:%M:%S"`
echo "Finish at $time"
Output:
$ bash example.sh
Start at 11:08:00
wait for 3 seconds
Finish at 11:08:03
3. sleepの例
次のように 1m 10s
ように他の単位の時間の組み合わせでsleepすることもできます。
#!/bin/bash
time=`date +"%H:%M:%S.%3N"`
echo "Start at $time"
echo "wait for 1m 10s seconds"
sleep 1m 10s
time=`date +"%H:%M:%S.%3N"`
echo "Finish at $time"
4. sleepの例
次の例は、0.1秒sleepする例です。基本的には時間の単位がsecondあるので、1秒未満の時間を休む時は 0.1s
よう少数で時間を表現すると、されます。
#!/bin/bash
time=`date +"%H:%M:%S.%3N"`
echo "Start at $time"
echo "wait for 0.1 seconds"
sleep 0.1s
time=`date +"%H:%M:%S.%3N"`
echo "Finish at $time"
Output:
$ bash example.sh
Start at 11:21:25.326
wait for 0.1 seconds
Finish at 11:21:25.430
5. sleepの例
以下は、ループでsleepを使用した例です。同じ時間間隔でループからのジョブを処理することができます。
#!/bin/bash
a=0
while [ "$a" -lt 5 ]
do
echo "Do something at $(date +"%H:%M:%S")"
sleep 3
a=$(expr $a + 1)
done
Output:
$ bash example.sh
Do something at 11:13:12
Do something at 11:13:15
Do something at 11:13:18
Do something at 11:13:21
Do something at 11:13:24
References
Related Posts
- Bash Shell - 文字列の出力方法(echo, printf)
- Bash Shell - 数値比較演算子
- Bash Shell - 変数が定義されているかどうかを確認する方法
- Bash Shell - スリープ関数、特定の時間を停止する
- Bash Shell - 文字列 切り出し(substring、split)
- Bash Shell - 日付、時刻を取得する
- Bash Shell - 文字列を連結する方法
- Bash Shell - ファイルの生成と文字列の追加
- Bash Shell - 文字列比較、文字列が含まれているかどうかを確認する
- Bash Shell - 条件文(if-else)
- Bash Shell - 数値演算(プラス、マイナス、乗算、除算)