美文网首页
shell脚本做万年历

shell脚本做万年历

作者: ie大博 | 来源:发表于2016-10-14 09:22 被阅读0次

    要求》》》》》先搭框架

    • 输入一个命令,比如,,,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"
    

    相关文章

      网友评论

          本文标题:shell脚本做万年历

          本文链接:https://www.haomeiwen.com/subject/fpmwyttx.html