shell脚本

shell脚本不熟悉。改人家的脚本
#!/usr/bin/bash
#echo "Subshell level = $BASH_SUBSHELL"


#计算上月末日期
getlastMonthLastDay()
{
	str=$1
	
	year=`echo $str|cut -c1-4`
	month=`echo $str|cut -c5-6`
	day=`echo $str|cut -c7-8`
	
	yy=$year
	mm=`echo $month-1|bc`
	[ $mm -lt 1 ] && mm=12;
	if [ $mm -eq 12 ]
		then
			yy=`expr $yy - 1`
	fi
	if [ $mm -lt 10 ]
		then
			mm=`echo 0$mm`
	fi
	aaa=`cal $mm $yy`
	dd=`echo $aaa|awk '{print $NF}'`
	echo $yy$mm$dd
}
#计算某个日期是星期几
getWeekDay()
{
	str=$1
	year=`echo $str|cut -c1-4`
	month=`echo $str|cut -c5-6`
	day=`echo $str|cut -c7-8`
	b=`cal $month $year|wc -l `
	week=`cal  $month  $year |awk  '{for(i=1;i<=NF;i++){if($i=='$day'){if (NR=='"$b"'-1){print i-1}else{print 7-NF+i-1}}}}'`
	echo $week;
}
#计算某个日期的前n天
getBeforeDays()
{
	str=$1
	days=$2
	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
}
#计算上周五的日期 当天为周五即为当天
getlastFri()
{
	now=$1
	todayweek=`getWeekDay "$nowdate"`
 	week=`expr $todayweek + 0`
 	
	case $todayweek in
 	0) laseFri=`getBeforeDays "$now" "2"`;;
 	1) laseFri=`getBeforeDays "$now" "3"`;;
 	2) laseFri=`getBeforeDays "$now" "4"`;;
 	3) laseFri=`getBeforeDays "$now" "5"`;;
 	4) laseFri=`getBeforeDays "$now" "6"`;;
 	5) laseFri=$now;;
 	6) laseFri=`getBeforeDays "$now" "1"`;;
 	esac
 	echo $laseFri
}


main(){
	#year=`date +%Y`
	#mon=`date +%m`
	#day=`date +%d`
	year=2008
	mon=03
	day=01

	nowdate=`echo $year$mon$day`
	echo $nowdate
	
	if [ $day -lt 10 ]
    then
       echo -n "月报:"
 				 lastmonthday=`getlastMonthLastDay "$nowdate"`
 				 echo $lastmonthday	
		else
		 if [ $day -lt 20  ]
		 		then
					echo -n "上旬报:"
					day=10
					echo $year$mon$day
			else
					echo -n "中旬报:"
					day=20	
					echo $year$mon$day				
		 fi
	fi
	echo -n "周报日期为:" 	
 	fri=`getlastFri "$nowdate"`
 	echo $fri
}

main


原帖地址 http://bbs.chinaunix.net/viewthread.php?tid=9178&extra=&page=1

你可能感兴趣的:(C++,c,PHP,脚本,bash)