shell脚本做万年历

2016-10-14  本文已影响0人  ie大博

要求》》》》》先搭框架

如何计算实际天数

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"
上一篇下一篇

猜你喜欢

热点阅读