シェルスクリプトで日付を列挙する。

仕事で引きついた運用環境に、コピペで一日ずつ増やして対応するバッチがあったので、簡単なのを書いた。GNU dateコマンドおよびbashであることが前提。

#!/bin/bash

STARTDATE=20111226
ENDDATE=20120105

DELTA=$((($(date -d "$ENDDATE" +%s)-$(date -d "$STARTDATE" +%s))/86400))

for i in $(seq 0 $DELTA)
do
        echo $(date -d "$STARTDATE $i day" +%Y%m%d)
done

exit 0

実行結果

$ ./datelist.sh
20111226
20111227
20111228
20111229
20111230
20111231
20120101
20120102
20120103
20120104
20120105

これで一歩コピペ地獄から抜けられた。