shell 中取当日的前一天的日期

shell 中取当天的前一天的日期
# !/bin/sh

# 已经测试通过
startdate=`date`

d1=`date '+%Y%m%d'`
if test ! "$1" = "" 
then
 d1=$1
fi

echo "TODAY IS ${d1}"

yesterday() 
{ 
 YEAR=`expr substr "${d1}" 1 4`
 MONTH=`expr substr "${d1}" 5 2`
 DAY=`expr substr "${d1}" 7 2`
 if [ $DAY -eq 1 ] 
 then 
 if [ $MONTH -eq 1 ] 
 then 
 YEAR=`expr $YEAR - 1` 
 MONTH=12 
 else 
 MONTH=`expr $MONTH - 1` 
 fi 
 DAY=`echo \`cal $MONTH $YEAR\`|tail -n1|awk '{print $NF}'` 
 else 
 DAY=`expr $DAY - 1` 
 fi 
 d2=`echo "$YEAR $MONTH $DAY"|awk '{if (length($2)==1) $2=0$2;if (length($3)==1) $3=0$3;printf "%s%s%s",$1,$2,$3}'` 
} 
yesterday
echo "yesterday IS ${d2}"

还有更简单的方法:

shell里直接调用系统变量 
获取当天日期`date   +%Y%m%d` 
获取昨天日期`date   -d   yesterday   +%Y%m%d` 
获取前天日期`date   -d   -2day   +%Y%m%d` 
依次类推,你可以写一段shell 试验一下:
d1=`date +%Y%m%d` 
d2=`date -d yesterday +%Y%m%d` 
d3=`date -d -2day +%Y%m%d` 
然后 
mkdir $d1 
mkdir $d2 
mkdir $d3