您当前的位置:主页 > 技术探讨 >

shell脚本基础(三)

发布时间:2017-02-25 19:42编辑:admin阅读(

    今天最后一更shell命令,是两个较为实用的shell脚本,前面提到的命令几乎都用到了,从明天开始更新C基础的相关命令。感兴趣的可以到我的简书中查看跟多的嵌入式知识。
    这是一段“万年历”命令,但是只能显示本月1月份的,输入其他月份会出错

    printCal
    {
    year=$1
    month=$2
    allDay=0
    i=1990
    array=(0 31 0 31 30 31 30 31 31 30 31 30 31)
    while [ $i -lt $year ]
    do
    if [[ `expr $i % 4` == 0 && $((i%100)) != 0 ]] || [ `expr $i % 400` == 0 ]
    then
    let allDay=allDay+366
    else
    let allDay=allDay+365
    fi
    let i++
    done
    if [[ `expr $year % 4` == 0 && $((year%100)) != 0 ]] || [ `expr $year % 400` == 0 ]
    then
    array[2]=29
    else
    array[2]=28
    fi
    i=1
    while [ $i -lt $month ]
    do
    let allDay=allDa+array[i]
    let i++
    done
    let allDay=allDay+1
    #week是记录星期几
    let week=allDay%7
    echo "=====${year}--${month}====="
    printf "日\t一\t二\t三\t四\t五\t六\n"
    blank=1
    colum=0
    while [ $blank -le $week ]
    do
    printf " \t"
    let blank++
    let colum++
    done
    i=1
    while [ $i -le ${array[$month]} ]
    do
    printf "$i\t"
    let i++
    let colum++
    if [ `expr $colum % 7` == 0 ]
    then
    printf "\n"
    fi
    done
    if [ `expr $colum % 7` != 0 ]
    then
    printf "\n"
    fi
    }
    if [ $# -eq 0 ]
    then
    year=`date +%Y`
    month=`date +%m`
    elif [ $# -eq 1 ]
    then
    echo "软件正在完善中..."
    elif [ $# -eq 2 ]
    then
    year=$1
    month=$2
    else
    echo "参数过多!!!"
    fi
    printCal $year $month

    这是老师带我们写的一段vi命令,据说这个命令对以后写c命令有帮助,不明觉厉,

    fileName=$1
    year=`date +%Y`
    month=`date +%m`
    day=`date +%d`
    createTime="$year\/$month\/$day"
    if [ $# -eq 0 ]
    then
    echo "请输入文件名!!!"
    elif [ $# -eq 1 ]
    then
    if [ -d ./${fileName} ]
    then
    echo "该文件是目录文件!!!"
    else
    length=${#fileName}
    let start=length-2
    suffix=${fileName:start:2}
    if [ $suffix = ".c" ]
    then
    if [ -e ./${fileName} ]
    then
    currentTime=`date +%k:%M:%S`
    lastChangeTime="lastChangeTime:${createTime}-${currentTime}"
    sed -i "" "s/lastChangeTime\.*/${lastChangeTime}/g" ./${fileName}   #一般-i后面的“”双引号可以去掉
    vi ./${fileName}
    else
    cp ~/prepare.txt ./prepare.c
    mv prepare.c ${fileName}
    sed -i "" "s/fileName/${fileName}/g" ./${fileName}            #一般-i后面的“”双引号可以去掉
    sed -i "" "s/createTime/${createTime}/g" ./${fileName}      #一般-i后面的“”双引号可以去掉
    sed -i "" "s/lastTime/${createTime}/g" ./${fileName}            #一般-i后面的“”双引号可以去掉
    currentTime=`date +%k:%M:%S`
    lastChangeTime="lastChangeTime:${createTime}-${currentTime}"
    sed -i "" "s/lastChangeTime\.*/${lastChangeTime}/g" ./${fileName}    #一般-i后面的“”双引号可以去掉
    vi ./${fileName}
    fi
    fi
    fi
    else
    echo "参数过多!!!"
    fi