如何让bash脚本循环到特定时间

时间:2013-07-09 12:23:19

标签: bash loops time

通常运行无限bash循环,我会执行以下操作:

while true; do
    echo test
    sleep 1
done

如果相反,我想做一个无限循环的循环,只要它早于20:00。有没有办法在bash中执行此操作?

3 个答案:

答案 0 :(得分:6)

您可以使用date打印小时数,然后与您要查找的小时数进行比较:

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

date "+%H"显示当前小时时,它会一直检查我们是否已经在那里或在“较小”的时间内。

答案 1 :(得分:2)

只需将true更改为真实条件:

while (( $(date +%H) < 20 )) ; do
    echo Still not 8pm.
    sleep 1
done

答案 2 :(得分:2)

如果您想要一个特定的日期,而不仅仅是整整几个小时,那么请尝试比较Unix时间:

while [ $(date +%s) -lt $(date --date="2016-11-04T20:00:00" +%s) ]; do
    echo test
    sleep 1
done