Your question, your audience. Choose who sees your identity—and your question—with question security.
date '+%Y-%m-%d'
The last month would beexpr `date '+%Y%m' - 1` | sed -e 's/\(....\)/\1-'
Now you can start with you counter variable:day=`expr `date '+%Y%m' - 1` | sed -e 's/\(....\)/\1-'`-01
date '+%Y%m'
Now try to have the result stored in a variable (and display the variable's content)day=`date '+%Y%m' `
echo $day
Now, decrement this by one (to get one month back):day=`expr $day - 1'
echo $day
date "+%Y-%d-%m"
Maybe, you want to try using single instead of double quotes:var_currdate=`date '+%Y-%d-%m'`
echo $var_currdate
date -d 'next month'
And this?:date -v -1m +%Y%m%d
#!/bin/bash
currentDate=`date +'%Y-%d-%m'`
echo "currentDate = $currentDate" # Remove this if you don't need it
yyyy=`echo $currentDate | cut -c-4`
mm=`echo $currentDate | cut -c9-`
daysInMonth=`cal | tr '\n' ' ' | awk '{print $NF}'`
day=1
while [ $day -le $daysInMonth ]
do
currentLoopDate=`printf %d-%02d-%02d $yyyy $day $mm`
echo $currentLoopDate # Remove this if you don't need it
let day=$day+1
done
Here's the output:Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.
Have a better answer? Share it in a comment.
From novice to tech pro — start learning today.
/home>cat ref_days.txt ### month|days
10|31
/home>cat loop_date.sh
#!/usr/bin/sh
var_currdate=`date "+%Y-%d-%m"`
var_currmonth=`echo ${var_currdate}|awk -F'-' '{print $3}'`
var_date=`echo ${var_currdate}|awk -F'-' '{print $2}'`
echo $var_currdate $var_currmonth ${var_date}
if [[ `grep $var_currmonth ref_days.txt|wc -l` -eq 1 ]]
then
var_loopdays=`cat ref_days.txt|awk -F'|' '{print $2}'`
var_loop1=`expr $((${var_date}-1))`
counter=1
while [[ $counter -le $var_loop1 ]]
do
var_monthstartdate_calc=`e
echo "day $counter `date -d "-${var_monthstartdate_cal
counter=`expr $(($counter+1))`
done
counter=${var_date}
while [[ ${counter} -le $var_loopdays ]]
do
var_monthstartdate_calc=`e
echo "day ${counter} `date -d "+${var_monthstartdate_cal
counter=`expr $(($counter+1))`
done
else
echo "invalid month"
fi
/home>. ./loop_date.sh
2016-25-10 10 25
day 1 Sat Oct 1 12:45:56 EDT 2016
day 2 Sun Oct 2 12:45:56 EDT 2016
day 3 Mon Oct 3 12:45:56 EDT 2016
day 4 Tue Oct 4 12:45:56 EDT 2016
day 5 Wed Oct 5 12:45:56 EDT 2016
day 6 Thu Oct 6 12:45:56 EDT 2016
day 7 Fri Oct 7 12:45:56 EDT 2016
day 8 Sat Oct 8 12:45:56 EDT 2016
day 9 Sun Oct 9 12:45:56 EDT 2016
day 10 Mon Oct 10 12:45:56 EDT 2016
day 11 Tue Oct 11 12:45:56 EDT 2016
day 12 Wed Oct 12 12:45:56 EDT 2016
day 13 Thu Oct 13 12:45:56 EDT 2016
day 14 Fri Oct 14 12:45:56 EDT 2016
day 15 Sat Oct 15 12:45:56 EDT 2016
day 16 Sun Oct 16 12:45:56 EDT 2016
day 17 Mon Oct 17 12:45:56 EDT 2016
day 18 Tue Oct 18 12:45:56 EDT 2016
day 19 Wed Oct 19 12:45:56 EDT 2016
day 20 Thu Oct 20 12:45:56 EDT 2016
day 21 Fri Oct 21 12:45:56 EDT 2016
day 22 Sat Oct 22 12:45:56 EDT 2016
day 23 Sun Oct 23 12:45:56 EDT 2016
day 24 Mon Oct 24 12:45:56 EDT 2016
day 25 Tue Oct 25 12:45:56 EDT 2016
day 26 Wed Oct 26 12:45:56 EDT 2016
day 27 Thu Oct 27 12:45:56 EDT 2016
day 28 Fri Oct 28 12:45:56 EDT 2016
day 29 Sat Oct 29 12:45:56 EDT 2016
day 30 Sun Oct 30 12:45:56 EDT 2016
day 31 Mon Oct 31 12:45:56 EDT 2016