找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 12898|回复: 0

[问题求助] Shell脚本for循环等待一段时间后重新执行当前循环计数

[复制链接]
发表于 2021-1-20 17:04:03 | 显示全部楼层 |阅读模式
从阿里云往公司内的服务器上导数据,白天是不能导的,所以挑夜里导数据。
不用 corntab 的原因是不知道能导多少数据需要多少时间,不好进行估计。
目前部分代码如下:
  1. for i in `seq -w -s ' ' 00 15`
  2. do
  3.     for j in `seq -w -s ' ' 00 29`
  4.     do
  5.         if [[ ${LOCAL_HOURS} -lt 7 ]] || [[ ${LOCAL_HOURS} -gt 22 ]];then
  6.             echo "WORKING...${i}.${j}"
  7.             # DB_NAME=trace_db_${i}
  8.             # TABLE_NAME=trace_table_${j}
  9.             # mysql -h${DB_ADDR} -u${DB_USER} -p${DB_PASS} -e "SELECT * FROM ${DB_NAME}.${TABLE_NAME} WHERE Time between '${START_TIME} AND '${END_TIME}' AND RecvTime < '${END_TIME}';" > ${SAVE_PATH}/${DB_NAME}/${TABLE_NAME}.csv
  10.         else
  11.             echo "NOT IN WORK TIME! ${i}.${j}"
  12.             sleep 10
  13.         fi
  14.     done
  15. done
复制代码
但是这段代码执行有问题,如果当前时间在 7:00~22:00 之间,那么 for 循环会开始下一次计数,当前所需的数据表就被跳过,导不出来了。
有没有什么方式可以在这段时间内 sleep 一段时间以后再检测当前时间,如果时间不在 7:00~22:00 ,再重新以当前 ${j} 的值进行循环呢?

先谢谢各位大佬了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:47 , Processed in 0.017286 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表