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