`

shell按日期的循环

 
阅读更多

        经常有需要按日期运行脚本补数据。有时候是好几天的。但是可能整个过程下来会超过24个小时。

最早的时候是这样的一个方案。

for((i=0;i<10;i++));
do
       date=`date -d  "$i days ago" +"%Y%m%d"`
       sh dojob.sh $date
done

 

        这个方案的不足就是,跨天之后,会漏掉某个日期。后来诞生了一个用配置文件的方法。把要搞的日期写到一个文本里。每行写一个日期。

file=/data/datelist.txt

while read day
do
      sh dojob.sh ${day}

done < $file

 

         这个方案就是利用了类似配置文件的方法。对于离散的日期,可以这样的方式来实现。

 

        对于方案1,还有一种修改的方案。就是利用数组的方式。

 

for day in {20160801..20160811}
do
      sh dojob.sh $day
done

 

           不足之处就是没办法跨月。所以还可以利用时间戳来处理。

 

 

startDate='20160621'
endDate='20180620'

for((ts=`date -d "${startDate}" +"%s"`;ts<=`date -d "${endDate}" +"%s"`;ts+=86400 ));
do
     day=`date  -d @${ts} +"%Y%m%d"`
     sh dojob.sh $day
done

 

          上例的再次改良版本(时间跨度可以支持年,月,日):

 

startDate=20171201
endDate=20171205
while [[ $startDate -le $endDate ]];
do
   echo $startDate
   startDate=`date -d "$startDate 1 days" +"%Y%m%d"`
done

 

 

分享到:
评论

相关推荐

    linux shell中实现循环日期的实例代码

    主要介绍了linux shell中实现循环日期的实例代码,文中还给大家提到了LINUX SHELL遍历日期(指定输入两个日期)的实现方法,感兴趣的朋友跟随小编一起看看吧

    shell 编程指南pdf

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    shell脚本练习题

    shell通过遍历输出两个日期范围内所有日期的方法

    主要介绍了在shell通过遍历输出两个日期范围内所有日期的方法,文中给出了详细的示例代码以及实现思路流程,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

    shell脚本按当前日期输出日志的实现

    shell脚本基本技能是设置变量,输出信息。如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash test.sh 控制台输出: 输出到控制台,并且写入...

    LINUX与UNIX SHELL编程指南(很全)

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    Linux与unix shell编程指南

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    Shell脚本专家指南

    7.2 主监控循环 第8章 shell进程树 8.1 用数组实现进程树 8.2 用非直接变量实现进程树 8.3 用Bourneshell实现进程树 第9章 数据重定向 9.1 避免错误 9.2 普通重定向 9.3 访问用户指定的文件句柄 9.4 从shell中访问...

    绝版经典《Linux与UNIX Shell编程指南》

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    LINUX与UNIX SHELL编程指南 高清PDF

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    学习shell必备(CN).chm

    12.3. 时间/日期 命令 12.4. 文本处理命令 12.5. 文件与归档命令 12.6. 通讯命令 12.7. 终端控制命令 12.8. 数学计算命令 12.9. 混杂命令 13. 系统与管理命令 13.1. 分析一个系统脚本 14. 命令替换 15. 算术扩展 16....

    Linux与Unix Shell编程指南(PDF格式,共30章)

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    linux shell 编程教程

    8.2.5 日期查询 598.2.6 范围组合 60 8.2.7 模式出现机率 60 8.2.8 使用grep匹配“与”或者“或”模式 61 8.2.9 空行 61 8.2.10 匹配特殊字符 61 8.2.11 查询格式化文件名 61 8.2.12 查询IP地址 61 8.3 类名 62 8.4 ...

    Linux shell编程指南

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    shell编程和unix命令

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    LINUX与UNIX SHELL编程指南

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail...

    LINUX 与 UNIX SHELL编程指南

    11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用 k 的其他 sort 方法 108 11.1.13 使用 k 做分类键排序 108 11.1.14 指定 sort 序列 108 11.1.15 pos 用法 108 11.1.16...

Global site tag (gtag.js) - Google Analytics