We needed to regenerate some data for the data warehouse so I had to run an extraction script once for each day of the month.
I wrote a simple bash script to make it easier to run a command or other scripts once for every day of a target month and year.
Code can be found below but may also be downloaded from here.
#!/bin/bash usage(){ echo "Usage: dailyLooper <year> <month> <script to run>" echo "Each date in the given month will be passed into the script in yyyy-mm-dd format" } CURRENT_MONTH=$(date +%m) TARGET_YEAR=$1 TARGET_MONTH=$2 if [ "$#" -lt 3 ]; then usage exit 1 fi if [ "$3" = "" ]; then SCRIPT="echo" else SCRIPT=$3 fi #returns the date yesterday if target month is the current month #otherwise returns the last date for the target month lastDayOfMonth(){ local _year=$1 local _month=$2 if [ $_month -lt $CURRENT_MONTH ]; then echo $(date -d "${TARGET_YEAR}-${TARGET_MONTH}-01 + 1 month - 1 day" +%d) else echo $(date -d "yesterday" +%d) fi } main(){ local _lastDay=$(lastDayOfMonth $TARGET_YEAR $TARGET_MONTH) i=1 while [ "$i" -le $_lastDay ] do local _date=$(date -d "${TARGET_YEAR}-${TARGET_MONTH}-${i}" +%Y-%m-%d) $SCRIPT $_date ((i++)) done #end day of month loop } main
I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.
No comments:
Post a Comment