要求》》》》》先搭框架
- 输入一个命令,比如,,,mycal,显示现在的月的月份
- 运用函数
- 制作命令$#
- 注意数组后是小括号。。。。
如何计算实际天数
- 先计算有多少年,闰年乘以366.平年乘以365.
- 函数的使用可以减少代码量
- 数组的使用,注意是(),和c语言不一样。
- 一般不在中括号里面加小括号,麻烦。
mycal()
{
year=$1#-----------------------------》注意和相面的主函数呼应
month=$2
i=1990
allday=0
# echo "$year"
# echo "$month"
arrayday=(0 31 28 31 30 31 30 31 31 30 31 30 31)#---》数组是小括号,注意第一个是0,arrayday【0】开始。
#-------------------------------------------------------how many days about year
while [ $i -le $year ]
do
if [ `expr $year % 4` == 0 -a `expr $year % 100` != 0 ] || [ `expr $year % 400 ` == 0 ]
then
let allday+=366
else
let allday+=365
fi
let i++
done
# echo "$allday"
if [ `expr $year % 4` == 0 -a `expr $year % 100` != 0 ] || [ `expr $year % 400 ` == 0 ]
then
arrayday[2]=29
else
arrayday[2]=28
fi
i=1
#----------------------------------------------------how many days about month
while [ $i -lt $month ]#--------》i么有意义,
do
let allday+=arrayday[i]
let i++
done
let space=allday%7
echo "${space}"
i=0
printf " ${year} ${month}\n"
printf "Sun Mon Tue Wed Thu Fri Sta\n"
day=1
while [ $i -lt $space ]
do
printf " "
let i++
done
while [ $day -le ${arrayday[${month}]} ]#---->》注意里面的month
do
printf " $day "
if [ $day -le 9 ]
then
printf " "
fi
let kongge=day+space
if [ `expr $kongge % 7` == 0 ]
then
printf "\n"
fi
let day++
done
}
if [ $# -eq 0 ]
then
argument1=`date +%Y`
argument2=`date +%m`
mycal $argument1 $argument2
elif [ $# -eq 2 ]
then
argument1=$1
argument2=$2
mycal $argument1 $argument2
else
echo "please input in right rule"
fi
printf "\n"
网友评论