shell命令代碼(萬年歷)

shell命令代碼

1. ==萬年歷==

題目和思路:
輸入查詢年份2016,再輸入查詢?cè)路?
1>1990.1.1星期一
2>查詢范圍1990.1.1之后查詢
3>閏年判斷條件(year%4==0&&year%100!=0)||(year%400==0)
思路:計(jì)算1990.1.1~2016.8.31所有的天數(shù)
     十月 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    默認(rèn)的當(dāng)月月歷
(2)mycal 2016     整個(gè)年份
(3)mycal 2016 10   


1.判斷輸入的參數(shù)的個(gè)數(shù)
0:
1:以后開發(fā)
2:
寫一個(gè)函數(shù)

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



3.考慮計(jì)算實(shí)際天數(shù)
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 "時(shí)間不符..."
    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 #當(dāng)月的第一天
        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 "參數(shù)錯(cuò)誤"
fi
    


2.自動(dòng)產(chǎn)生當(dāng)天的文件夾屹堰,供每天寫代碼使用


/*
1.自動(dòng)產(chǎn)生當(dāng)天的文件夾,供每天寫代碼使用
file=`date +%Y/%m%d`
echo "${file}"


~/practice/2016/10/1012
思路:
1>判斷參數(shù)個(gè)數(shù)
xx.sh
xx.sh -y 
xx.sh -m
xx.sh -d

2>
0:-d
1:
>1:提示錯(cuò)誤

3>如果參數(shù)是一個(gè)
-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 "參數(shù)?"
        printf "用法[-y] [-m] [-d]\\n"
    ;;
    esac
else    
    echo "參數(shù)過多"
fi

3. 練習(xí)1:求1~100偶數(shù)和

#### 練習(xí)1:求1~100偶數(shù)和
求1~100偶數(shù)和
  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
找規(guī)律:
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:代表執(zhí)行的文件./xx.sh
$1:代表執(zhí)行的第一個(gè)參數(shù)
$2:代表執(zhí)行的第二個(gè)參數(shù)
......
$n:代表執(zhí)行的第n個(gè)參數(shù)
$#:代表執(zhí)行參數(shù)的個(gè)數(shù)书闸,不包括命令本身

0.判斷是否有參數(shù)咖杂,參數(shù)是否為1
1.判斷文件是否存在
2.如果存在,判斷文件是否為普通文件
3.改權(quán)限
4.運(yùn)行
5.讓這個(gè)命令在全局有效
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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涨椒,一起剝皮案震驚了整個(gè)濱河市器钟,隨后出現(xiàn)的幾起案子津坑,更是在濱河造成了極大的恐慌,老刑警劉巖傲霸,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疆瑰,死亡現(xiàn)場離奇詭異,居然都是意外死亡昙啄,警方通過查閱死者的電腦和手機(jī)穆役,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跟衅,“玉大人孵睬,你說我怎么就攤上這事×骢危” “怎么了掰读?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵秘狞,是天一觀的道長。 經(jīng)常有香客問我蹈集,道長烁试,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任拢肆,我火速辦了婚禮减响,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘郭怪。我一直安慰自己支示,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布鄙才。 她就那樣靜靜地躺著颂鸿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪攒庵。 梳的紋絲不亂的頭發(fā)上嘴纺,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音浓冒,去河邊找鬼栽渴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稳懒,可吹牛的內(nèi)容都是我干的闲擦。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼僚祷,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼佛致!你這毒婦竟也來了贮缕?” 一聲冷哼從身側(cè)響起辙谜,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎感昼,沒想到半個(gè)月后装哆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡定嗓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蜕琴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宵溅。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凌简,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恃逻,到底是詐尸還是另有隱情雏搂,我是刑警寧澤藕施,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站凸郑,受9級(jí)特大地震影響裳食,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芙沥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一诲祸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧而昨,春花似錦救氯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躺孝,卻和暖如春享扔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背植袍。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工惧眠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人于个。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓氛魁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親厅篓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秀存,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容