Linux shell date 按照时间片段进行循环

记得曾经写脚本按照天为单位进行循环,循环的其实日期可以是任何一天,像这样:

 1 START_DAY=$(date -d "$TODAY -1days" +%Y%m%d);
 2 
 3 END_DAY=$(date -d "$TODAY -${cycle}days" +%Y%m%d);
 4 
 5 for((;$END_DAY<=$START_DAY; END_DAY=$(date -d "$END_DAY +1days" +%Y%m%d)))
 6 
 7 do
 8 
 9   ...
10 
11 done
$TODAY是外界传入的时间参数,比如20141222;
cycle是一个整数,表示希望循环的天数,比如一个月 30。
然后再循环的时候对END_DAY每次加一天,加够30次后,循环终止。

现在突然需要按照10分钟的时间片段循环。
本以为`date -d "201412021311 +10minutes" +%H:%M`这样的方式可以凑效的,却发现这样写不行。试来试去,写作这样
`date -d "20141202 1311 +10minutes" +%H:%M`才凑效,感觉这样很奇葩。。。

改造了一下,只在一天内进行循环
 1 startpoint=0000;
 2 endpoint=0010;
 3 
 4 for((i=1;i<=144;i++))
 5 do
 6 startpoint_format=`date -d "$startpoint" +%H:%M;`
 7 endpoint_format=`date -d "$endpoint" +%H:%M;`
 8 ...
 9 startpoint=`date -d "$startpoint +10minutes" +%H%M;`
10 endpoint=`date -d "$endpoint +10minutes" +%H%M;`
11 done

这样看来还不错:)

还可以按照时间戳增减来做循环,没有这个看着舒心:)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。