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