masalibの日記

システム開発、運用と猫の写真ブログです

shellを日付単位でループして実行する

とある作業で日付単位でループして実行しないといけない事があった 年単位に指定するとフリーズするというイケてる状態だった 日別に実行するためにshellでループを作って実行した

毎回、このループの仕方を忘れてしまうので メモとして残す

#!/bin/sh

STARTDATE="2012-02-01"
ENDDATE="2020-01-31"

CURRENTDATE=$STARTDATE

CURRENTDATE3=`date -d "$CURRENTDATE 1day" "+%Y%m%d"`
CURRENTDATEYYYYMM=`date -d "$CURRENTDATE3 -1day" "+%Y%m"`
CURRENTDATEDD=`date -d "$CURRENTDATE3 -1day" "+%d"`
CURRENTDATEYYYYMMDD=`date -d "$CURRENTDATE3 -1day" "+%Y-%m-%d"`

cd /xxxxxxxxx/tools/

while [ 1 ] ; do

        # 処理
        #echo $CURRENTDATE
        echo $CURRENTDATEYYYYMMDD
    php xxxx $CURRENTDATEYYYYMMDD >> xxx.csv

        if [ $CURRENTDATE = $ENDDATE ] ; then
                break
        fi

        CURRENTDATEYYYYMMDD=`date -d "$CURRENTDATE 1day" "+%Y-%m-%d"`
        CURRENTDATE=`date -d "$CURRENTDATE 1day" "+%Y-%m-%d"`

done