shell命令代码(万年历)

shell命令代码

1. ==万年历==

题目和思路:
输入查询年份2016,再输入查询月份9
1>1990.1.1星期一
2>查询范围1990.1.1之后查询
3>闰年判断条件(year%4==0&&year%100!=0)||(year%400==0)
思路:计算1990.1.1~2016.8.31所有的天数
     十月 2016
日 一 二 三 四 五 六
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31


2.
1>输入方式:
(1)mycal    默认的当月月历
(2)mycal 2016     整个年份
(3)mycal 2016 10   


1.判断输入的参数的个数
0:
1:以后开发
2:
写一个函数

2.具体考虑
0:year=`date +%Y` month=`date +%m`
2:year=$1 month=$2



3.考虑计算实际天数
1990.1.1~2016.10.1

(1)是算1990.1.1~2015.12.31
(2)2016.1.1~2016.9.30


calWhat()
{
    year=$1
    month=$2
    if [ $year -lt 1990 ] || [ $month -lt 1 ] || [ $month -gt 12 ]
    then 
        echo "时间不符..."
    else
        i=1990
        allDay=0
        array=(0 31 28 31 30 31 30 31 31 30 31 30 31)
        while [ $i -lt $year ]
        do  
            if [ `expr $i % 4` == 0 -a `expr $i % 100` != 0 ] || [ `expr $i % 400` == 0 ]
            then
                let allDay+=366
            else
                let allDay+=365
            fi
            let i++
        done
        if [ `expr $year % 4` == 0 -a `expr $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+=array[i]
            let i++
        done
        let week=allDay%7
        let week=(week+1)%7 #当月的第一天
        echo -e "\\t\\t\\t${year}/${month}"
        echo -e "日\\t一\\t二\\t三\\t四\\t五\\t六"
        colum=0
        i=1
        while [ $i -le $week ]
        do
            printf " \\t"
            let i++
            let colum++
        done
        i=1
        while [ $i -le ${array[$month]} ]
        do
            printf "${i}\\t"
            let colum++
            if [ `expr $colum % 7` == 0 ]
            then 
                printf "\\n"
            fi
            let i++
        done
        printf "\\n"
    fi
    
}

if [ $# -eq 0 ]
then 
    argument1=`date +%Y`
    argument2=`date +%m`
    calWhat ${argument1} ${argument2}
elif [ $# -eq 1 ]
then
    echo "尽情期待..."
elif [ $# -eq 2 ]
then 
    argument1=$1
    argument2=$2
    calWhat ${argument1} ${argument2}
else
    echo "参数错误"
fi
    


2.自动产生当天的文件夹,供每天写代码使用


/*
1.自动产生当天的文件夹,供每天写代码使用
file=`date +%Y/%m%d`
echo "${file}"


~/practice/2016/10/1012
思路:
1>判断参数个数
xx.sh
xx.sh -y 
xx.sh -m
xx.sh -d

2>
0:-d
1:
>1:提示错误

3>如果参数是一个
-y
-m
-d


year=`date +%Y`
month=`date +%m`
day=`date +%m%d`
if [ $# -eq 0 ]
then 
    if [ -e ~/practice/$year/$month/$day ]
    then 
        echo "${day}文件已存在"
    else
        mkdir -p ~/practice/$year/$month/$day
    fi
    cd  ~/practice/$year/$month/$day
elif [ $# -eq 1 ]
then 
    case $1 in
    "-y")
        if [ -e ~/practice/$year ]
        then 
            echo "${year}文件已存在"
        else
            mkdir -p ~/practice/$year
            
        fi
        cd ~/practice/$year
    ;;
    "-m")
        if [ -e ~/practice/$year/$month ]
        then 
            echo "${month}文件已存在"
        else
            mkdir -p ~/practice/$year/$month
        fi
        cd ~/practice/$year/$month
    ;;
    "-d")
        if [ -e ~/practice/$year/$month/$day ]
        then 
            echo "${day}文件已存在"
        else
            mkdir -p ~/practice/$year/$month/$day
        fi  
        cd ~/practice/$year/$month/$day
    ;;
    *)
        printf "参数?"
        printf "用法[-y] [-m] [-d]\\n"
    ;;
    esac
else    
    echo "参数过多"
fi

3. 练习1:求1~100偶数和

#### 练习1:求1~100偶数和
求1~100偶数和
  1 sum=0
  2 i=1
  3 while [ $i -le 100 ]
  4 do
  5     if [ `expr $i % 2` -eq 0 ]
  6     then
  7         let sum=sum+i
  8     fi
  9     let i++
 10 done
 11 echo "sum=${sum}"
 12 echo "i=${i}"

3. 打印9X9乘法表

1X1=1
1X2=2 2X2=4
….
1X9=9 2X9=18  ….9X9=81
找规律:
1行1
2行2
n行n
  1 row=1
  2 colum=1
  3 while [ $row -le 9 ]
  4 do
  5     colum=1
  6     while [ $colum -le $row ]
  7     do
  8         let value=colum*row
  9         printf "%dX%d=%02d " "$colum" "$row" "$value"
 10         let colum++
 11     done
 12     printf "\\n"
 13     let row++
 14 done

4. 打印

  
   *
  ***
 *****
*******

row=1
while [ $row -le 4 ]
do
    space=1
    while [ $space -le $((4-row)) ]
    do
        printf " "
        let space++
    done
    star=1  
    while [ $star -le $((2*row-1)) ]
    do
        printf "*"
        let star++
    done
    let row++
    printf "\\n"
done

5../xx.sh


$0:代表执行的文件./xx.sh
$1:代表执行的第一个参数
$2:代表执行的第二个参数
......
$n:代表执行的第n个参数
$#:代表执行参数的个数,不包括命令本身

0.判断是否有参数,参数是否为1
1.判断文件是否存在
2.如果存在,判断文件是否为普通文件
3.改权限
4.运行
5.让这个命令在全局有效
chmod +x mysh
sudo cp mysh /bin/
if [ $# -eq 0 ]
then 
    echo "do what?"
elif [ $# -eq 1 ]
then
    if [ -e $1 ]
    then
        if [ -f $1 ]
        then
            chmod +x $1
            ./$1
        else
            echo "$1 is not file"
        fi
    else
        echo "$1:No such file or directory"
    fi
else
    echo "too much arguments"
fi
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,061评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,407评论 3 404
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,275评论 0 368
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,084评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,091评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,555评论 1 315
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,914评论 3 429
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,900评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,438评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,470评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,596评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,187评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,932评论 3 340
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,361评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,511评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,163评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,671评论 2 366

推荐阅读更多精彩内容