#计算某日前若干天日期

发表于:2007-07-04来源:作者:点击数: 标签:
#计算某日前若干天日期 #date=YYYYMMDD #Usage:command date day get_before_days() str= days= yy=`echo str|cut -c 1-4` mm=`echo str|cut -c 5-6` dd=`echo str|cut -c 7-8` sav_dd=days days=`expr days - dd` while [ days -ge 0 ] do mm=`expr mm - 1`
#计算某日前若干天日期
#date=YYYYMMDD
#Usage:command date day
get_before_days()
{
str=
days=
yy=`echo $str|cut -c 1-4`
mm=`echo $str|cut -c 5-6`
dd=`echo $str|cut -c 7-8`
sav_dd=$days
days=`expr $days - $dd`
while [ $days -ge 0 ]
do
mm=`expr $mm - 1`
[ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`
aaa=`cal $mm $yy`
bbb=`echo $aaa|awk '{print $NF}'`
days=`expr $days - $bbb`
done
dd=`expr 0 - $days`
expr $dd : "^.$" > /dev/null && dd=0$dd
expr $mm : "^.$" > /dev/null && mm=0$mm
echo $yy$mm$dd
}


get_lastday_of_lastmonth()
{
yy=`date +%Y`
mm=`date +%m-1|bc`
[ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`
aaa=`cal $mm $yy`
dd=`echo $aaa|awk '{print $NF}'`
echo $yy$mm$dd
}

print $NF的$NF是打印最后一个列。因为awk的内置变量NF是列的总数,而$NF就代表着最后一列

原文转自:http://www.ltesting.net