shell按日期的循环 博客分类: shell工作经验
程序员文章站
2024-03-15 10:30:29
...
经常有需要按日期运行脚本补数据。有时候是好几天的。但是可能整个过程下来会超过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
上一篇: 8种nosql数据库系统对比(转) cassandraapachejavascriptnosql
下一篇: zookeeper注册服务与netty的简单结合应用 博客分类: zookeeper zookeepernettyha
推荐阅读
-
shell按日期的循环 博客分类: shell工作经验
-
Shell的sed命令 博客分类: Linux Shellsed
-
管道的一个应用: 将一个tcp端口的输出转移到另外一个tcp端口而输出 博客分类: Shell pipemkfifo
-
管道的一个应用: 将一个tcp端口的输出转移到另外一个tcp端口而输出 博客分类: Shell pipemkfifo
-
shell中的tput命令讲解 博客分类: 自学记录shell 脚本学习记录 tput脚本
-
[linux]简单实现的shell中的 tree 命令。 博客分类: linux_app
-
[linux]简单实现的shell中的 tree 命令。 博客分类: linux_app
-
[SHELL]用于快速搜索C++/C/JAVA/汇编等源代码的SHELL脚本 博客分类: linux_app
-
Please make sure the user has the privilege to run hadoop shell 博客分类: kylin好玩的东西
-
列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环) 博客分类: SQL SQLOracleBlackBerry黑莓