[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

从阿里云往公司内的服务器上导数据,白天是不能导的,所以挑夜里导数据。
不用 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} 的值进行循环呢?

先谢谢各位大佬了。

返回列表