AIX 取指定天前的日期

#取系统时间
LOGBACKUPDATE=`date "+%Y-%m-%d"`
echo $LOGBACKUPDATE
        BACKYEAR=`echo $LOGBACKUPDATE|awk -F'-' '{print $1}'`
        BACKMONTH=`echo $LOGBACKUPDATE|awk -F'-' '{print $2}'`
        BACKDAY=`echo $LOGBACKUPDATE|awk -F'-' '{print $3}'`
        YEAR=$BACKYEAR
        MONTH=`echo $BACKMONTH | sed 's/^0//g'`
        DAY=`echo $BACKDAY | sed 's/^0//g'`
#$NUM1为保留日 7天或者3天
YEARDAY () {
#判断闰年
#标准如果能被400整除那么为闰年
#如果能被4整除且不能被100整除那么是闰年
if [ $# -ne 1 ];then
    echo "Usage: $0 year"
    exit 1;
fi
FYEAR="$YEAR"

if [ `expr ${FYEAR} % 400` -eq 0 ];then
    FRUN="366"
else
    if [ `expr ${FYEAR} % 4` -eq 0 ];then
        if [ `expr ${FYEAR} % 100` -eq 0 ];then
            FRUN="365"
        else
            FRUN="366"
        fi
    else
        FRUN="365"
    fi
fi

echo "$FRUN"

exit 0;
}
#定义DOY函数
DOY () {
#MD表示
MD=0
#天数累计
MDTOTAL=0
NUM1=1
	if [ $DAY -gt $NUM1 ]
	then
#超出保留日日期
		DAY=`expr $DAY - $NUM1`
	else
		while [ 1 ]
		do
			MONTH=`expr $MONTH - 1`
			[ $MONTH -le 0 ] && { MONTH=12 ; YEAR=`expr $YEAR - 1` ; }
			case $MONTH in
				1|3|5|7|8|10|12 ) DAYADD=31
					;;
				4|6|9|11 ) DAYADD=30
					;;
				2 )if [ $(YEARDAY $YEAR) = 366 ]
                                      then DAYADD=29
                                       else DAYADD=28
                                       fi
 
					;;
			esac

			DAY=`expr $DAY + $DAYADD`
			[ $DAY -gt $NUM1 ] && { DAY=`expr $DAY - $NUM1` ; break ; }
		done
	fi
	[ $DAY -lt 10 ] && { DAY="0"`expr $DAY` ; }
	[ $MONTH -lt 10 ] && { MONTH="0"`expr $MONTH` ; }

	RMDATE="$YEAR-$MONTH-$DAY"
	echo "按要求取得删除日期:$RMDATE"
}
DOY

原文地址:https://www.cnblogs.com/hzcya1995/p/13352120.html