shell按日期的迴圈

2021-09-02 16:16:21 字數 994 閱讀 5849

經常有需要按日期執行指令碼補資料。有時候是好幾天的。但是可能整個過程下來會超過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 $

done < $file

這個方案就是利用了類似配置檔案的方法。對於離散的日期,可以這樣的方式來實現。

對於方案1,還有一種修改的方案。就是利用陣列的方式。

for day in 

do sh dojob.sh $day

done

不足之處就是沒辦法跨月。所以還可以利用時間戳來處理。

startdate='20160621'

enddate='20180620'

for((ts=`date -d "$" +"%s"`;ts<=`date -d "$" +"%s"`;ts+=86400 ));

do day=`date -d @$ +"%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

Shell迴圈獲取日期

大於 gt greater than 小於 lt less than 大於或等於 ge greater than or equal 小於或等於 le less than or equal 不相等 ne not equal bin bash 倒序按天遍歷日期 傳入遍歷的開始時間和結束時間 startd...

shell中按格式顯示日期

在shell程式設計中,將日期按照指定格式輸出是常見的任務。我們看一下乙個最常見的例子 now date y m d h m s n 對於初學者來講,要注意幾點 1 如果不指定格式,直接將date的結果賦給now,那麼格式為now date 一定要注意date上面的兩個符號,為鍵盤上面1左邊的那個符...

mysql 儲存過程按日期迴圈插入

參考部落格 定義與使用變數時需要注意以下幾點 1 declare語句必須用在degin end語句塊中,並且必須出現在degin end語句塊的最前面,即出現在其他語句之前。2 declare定義的變數的作用範圍僅限於declare語句所在的degin end塊內及巢狀在該塊內的其他degin en...