標籤:
記得曾經寫指令碼按照天為單位進行迴圈,迴圈的其實日期可以是任何一天,像這樣:
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
這樣看來還不錯:)
還可以按照時間戳記增減來做迴圈,沒有這個看著舒心:)
Linux shell date 按照時間片段進行迴圈