シェル内の時間条件ループ 質問する

シェル内の時間条件ループ 質問する

最近シェルスクリプトを学び始めたばかりなので、それについてはあまり知りません。

時間ベースの while ループの例を見つけようとしていますが、見つかりません。

特定の時間、たとえば 1 時間、ループを実行したいとします。ループは 1 時間実行され、その後自動的に終了します。

編集: このループはスリープなしで継続的に実行されるため、ループ条件はスリープではなく、ループの開始時刻と現在の時刻に基づく必要があります。

ベストアンサー1

これを行う最良の方法は、スクリプト (またはシェル) の実行時間がカウントされる $SECONDS 変数を使用することです。以下のサンプルは、while ループを 3 秒間実行する方法を示しています。

#! /bin/bash
end=$((SECONDS+3))

while [ $SECONDS -lt $end ]; do
    # Do what you want.
    :
done

おすすめ記事