批处理之家's Archiver

kenshin912 发表于 2021-1-20 17:04

Shell脚本for循环等待一段时间后重新执行当前循环计数

从阿里云往公司内的服务器上导数据,白天是不能导的,所以挑夜里导数据。
不用 corntab 的原因是不知道能导多少数据需要多少时间,不好进行估计。
目前部分代码如下:[code]for i in `seq -w -s ' ' 00 15`
do
    for j in `seq -w -s ' ' 00 29`
    do
        if [[ ${LOCAL_HOURS} -lt 7 ]] || [[ ${LOCAL_HOURS} -gt 22 ]];then
            echo "WORKING...${i}.${j}"
            # DB_NAME=trace_db_${i}
            # TABLE_NAME=trace_table_${j}
            # 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
        else
            echo "NOT IN WORK TIME! ${i}.${j}"
            sleep 10
        fi
    done
done[/code]但是这段代码执行有问题,如果当前时间在 7:00~22:00 之间,那么 for 循环会开始下一次计数,当前所需的数据表就被跳过,导不出来了。
有没有什么方式可以在这段时间内 sleep 一段时间以后再检测当前时间,如果时间不在 7:00~22:00 ,再重新以当前 ${j} 的值进行循环呢?

先谢谢各位大佬了。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.