シェルスクリプトで1日毎の日付でループする処理

1日毎でループして処理を実行するシェルです。
データを扱っていると日毎でデータを移行するといった作業が時折発生し、
都度調べていたのでここにメモとして残しておきます。

#!/bin/bash
START_DATE=2019-08-01
END_DATE=2019-09-01
END_DATE_SEC=`date -d "${END_DATE}" "+%s"`
DATE=${START_DATE}
DATE_SEC=`date -d "${DATE}" "+%s"`
while [ ${DATE_SEC} -lt ${END_DATE_SEC} ] ; do
  echo $DATE
  DATE=`date -d "${DATE} 1 day" "+%Y-%m-%d"`
  DATE_SEC=`date -d "${DATE}" "+%s"`
done
2019-08-01
2019-08-02
2019-08-03
2019-08-04
2019-08-05
2019-08-06
2019-08-07
2019-08-08
2019-08-09
2019-08-10
2019-08-11
2019-08-12
2019-08-13
2019-08-14
2019-08-15
2019-08-16
2019-08-17
2019-08-18
2019-08-19
2019-08-20
2019-08-21
2019-08-22
2019-08-23
2019-08-24
2019-08-25
2019-08-26
2019-08-27
2019-08-28
2019-08-29
2019-08-30
2019-08-31

他にfor分でより簡潔なコードもあったのですが、ハイフン付きの日付形式だと「value too great for base」のエラーとなってしまいました。

START_DATE=2019-08-01
END_DATE=2019-09-01
for (( DATE=${START_DATE} ; ${DATE} < ${END_DATE} ; DATE=`date -d "${DATE} 1 day" '+%Y-%m-%d'` )) ; do
  echo ${DATE}
done
/bin/bash: line 2: ((: DATE=2019-08: value too great for base (error token is "08")
Exited with code 1

この解決方法が見つからず日付を秒単位の数値にしてwhileでループする方法をとりました。
※ハイフンなしの日付形式ならこの書き方でOK

最近はクラウドやコンテナ技術の発展でちょっとしたことをシェルで済ますことが増えた気がします。シェル芸人とまではいかなくてもすんなり書けるようになれるといいなと思った今日この頃でした。