通常、bash の無限ループを実行するには、次のようにします。
while true; do
echo test
sleep 1
done
代わりに、20:00 より前である限り無限にループするループを実行したいとします。これをbashで行う方法はありますか?
を使用date
して時間を印刷し、探している時間と比較できます。
while [ $(date "+%H") -lt 20 ]; do
echo "test"
sleep 1
done
現在の時間をdate "+%H"
示すように、すでにそこにいるか、「より短い」時間にあるかをチェックし続けます。
1 時間だけでなく特定の日付が必要な場合は、Unix 時間と比較してみてください。
while [ $(date +%s) -lt $(date --date="2016-11-04T20:00:00" +%s) ]; do
echo test
sleep 1
done
true
実際の状態に変更するだけです:
while (( $(date +%H) < 20 )) ; do
echo Still not 8pm.
sleep 1
done