3

通常、bash の無限ループを実行するには、次のようにします。

while true; do
    echo test
    sleep 1
done

代わりに、20:00 より前である限り無限にループするループを実行したいとします。これをbashで行う方法はありますか?

4

3 に答える 3

6

を使用dateして時間を印刷し、探している時間と比較できます。

while [ $(date "+%H") -lt 20 ]; do
    echo "test"
    sleep 1
done

現在の時間をdate "+%H"示すように、すでにそこにいるか、「より短い」時間にあるかをチェックし続けます。

于 2013-07-09T12:27:32.823 に答える
4

1 時間だけでなく特定の日付が必要な場合は、Unix 時間と比較してみてください。

while [ $(date +%s) -lt $(date --date="2016-11-04T20:00:00" +%s) ]; do
    echo test
    sleep 1
done
于 2016-11-04T20:04:38.923 に答える
2

true実際の状態に変更するだけです:

while (( $(date +%H) < 20 )) ; do
    echo Still not 8pm.
    sleep 1
done
于 2013-07-09T12:27:28.387 に答える