通常运行无限bash循环,我会执行以下操作:
while true; do
echo test
sleep 1
done
如果相反,我想做一个无限循环的循环,只要它早于20:00。有没有办法在bash中执行此操作?
答案 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