Decrementing dates in bash
11 Aug 2020
I wanted to build a series of commands that had decrementing start/end dates, like so:
./pg-loader -start=2019-04-07 -end=2019-04-14 ./pg-loader -start=2019-03-31 -end=2019-04-07 ./pg-loader -start=2019-03-24 -end=2019-03-31 ./pg-loader -start=2019-03-17 -end=2019-03-24 ./pg-loader -start=2019-03-10 -end=2019-03-17 ./pg-loader -start=2019-03-03 -end=2019-03-10 ./pg-loader -start=2019-02-24 -end=2019-03-03 ./pg-loader -start=2019-02-17 -end=2019-02-24 ./pg-loader -start=2019-02-10 -end=2019-02-17 ./pg-loader -start=2019-02-03 -end=2019-02-10
So I build it using this script:
#!/bin/bash set -e set -o pipefail set -u STARTDT=2019-04-07 ENDDT=2019-04-14 for i in $(seq 1 10); do STARTDT=$(date --date="${ENDDT} -7 day" +%Y-%m-%d) echo "./pg-loader -start=${STARTDT} -end=${ENDDT}" ENDDT=${STARTDT} done