濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > linux Shell學(xué)習(xí)筆記第三天

linux Shell學(xué)習(xí)筆記第三天

熱門標(biāo)簽:地圖標(biāo)注如何弄全套標(biāo) 南京電銷外呼系統(tǒng)哪家好 武漢AI電銷機(jī)器人 外呼系統(tǒng)會(huì)封嗎 實(shí)體店地圖標(biāo)注怎么標(biāo) 萬利達(dá)綜合醫(yī)院地圖標(biāo)注點(diǎn) 股票配資電銷機(jī)器人 在電子版地圖標(biāo)注要收費(fèi)嗎 電銷機(jī)器人 深圳

第三天:條件選擇

大 綱

    應(yīng)用實(shí)例分析

    條件測(cè)試

    if…else…fi

    case…in…esac

實(shí)現(xiàn)功能菜單

執(zhí)行腳本后

按1,顯示當(dāng)前時(shí)間

按2,顯示CPU負(fù)載

按3,顯示剩余內(nèi)存

按0,退出腳本

按其他字符,提示超出選擇范圍后退出

分析步驟。

    #date +%T

    uptime awk截取

    free –m

條件測(cè)試格式

    #test –option obj

    #[ -option obj ]

返回結(jié)果

  1. 表達(dá)式內(nèi)容測(cè)試結(jié)果是真的
  2. 表達(dá)式內(nèi)容測(cè)試結(jié)果是假的

 

測(cè)試的對(duì)象分類

    執(zhí)行結(jié)果(執(zhí)行成功或失敗)

    文件(文件是否存在等)

    文本(是否一致)

    數(shù)字(數(shù)值比較)

條件測(cè)試的選項(xiàng)

選項(xiàng) 作用
-d 目錄
-e 是否存在
-f 是否是普通文件
-s 文件大小是否等于0
-r 是否可讀
-w 是否可寫
-x 是否可執(zhí)行

 

邏輯操作符號(hào)

選項(xiàng)

作用

-a

與操作

-o

或操作

!

非操作

 

實(shí)例:

    #test –e /etc/passwd –a –e /etc/shadow 中間是a與操作,則都為0才得0

    #test –e /etc/passwd –o –e /etc/groups 中間是o或操作,則有一真則真0

字符串操作符

    ==            兩個(gè)字符串相等

    !=            兩個(gè)字符串不相等

    -z            空字符串

    -n            非空字符串

實(shí)例:

    #test –z $LOGNAME

    #echo $LOGNAME

    #echo $?

數(shù)值比較操作符

符號(hào)

說明

-eq

等于

-ne

不等于

-gt

大于

-lt

小于

-ge

大于等于

-le

小于等于

 

if…else…fi 條件選擇

    if控制結(jié)構(gòu)的基本格式:

        if條件            #判斷開始                    可以是命令,也可以是test語句

        then                #如果條件為真                反值真0則執(zhí)行

            命令1        #執(zhí)行命令1

        else                #如果條件為假                反值假1則執(zhí)行

            命令2        #執(zhí)行命令2

        fi                #判斷結(jié)束

    實(shí)例(if…else…fi)1

    inputtest.sh

    #!/bin/bash

    #input test

    echo –n “Enter your name:”

    read name

    #did the user just hit return

    if [ "${name}" == "" ]

    then

        echo “You did not enter any information”

    else

        echo “Your name: ${name}”

    fi

    

 

實(shí)例(if…else…fi)2

filecopy.sh

#!/bin/bash

#file copy

if cp /etc/passwd passwd.bak 2>/dev/null                2>/dev/null 丟掉錯(cuò)誤提示

then

    echo “Good Copy!”

else

    echo “`basename $0`: error,could not copy”

fi

if…else…fi的嵌套 (兩層的嵌套)

    if 條件1;then

        if 條件2;then

            命令1

        else

            命令2

    else

        if條件3;then

            命令3

        else

            命令4

    fi

case…in…esac條件選擇 (比較靈活的方式)

    case語句多用于較多分支判斷

    case格式: (多種模式,只匹配和variable相等的模式)

        case variable in

            模式1)命令1…;;

            模式2)命令2…;;

        esac

    匹配模式

*        匹配任意字符

?        匹配任意單字符

[]        匹配字符范圍

 

 

case…in.esac實(shí)例1

    #!/bin/bash

    #case select

    echo –n “enter a number from 1 to 5:”

read NUM

case $NUM in

        1) echo “you select 1″ ;;

        2) echo “you select 2″ ;;

        3) echo “you select 3″ ;;

        4) echo “you select 4″ ;;

        5) echo “you select 5″ ;;

        *) echo “basename $This is not between 1 and 5″

    esac

case…in.esac實(shí)例2

    題目是:學(xué)生的考試成績是0-100分,在85以上的要提示you are the best!,在70-84顯示you get a good mark! ,在60-74的顯示come on!,60分以下顯示You must study hard!

#!/bin/bash

echo –n “please input your mark:”

read mark

case $mark in

    100|9[0-9]|8[5-9]) echo “you are the best!”;;        100、90-99、85-89

    8[0-4]|7[0-9]) echo “you get a good mark!”;;        80-84、70-79

    7[0-4]|6[0-9]) echo “come on!”;;                    70-74、60-69

    [0-5][0-9]) echo “You must study hard!”;;            00-59

esac

解決今天的問題

    使用if…else…fi的方式對(duì)輸入的變量進(jìn)行判斷。

    在每個(gè)判斷的分支上執(zhí)行相應(yīng)的語句。

    menu.sh

    #!/bin/bash

    clear

    echo “——————–menu—————–”

    echo “1) Show Time”

    echo “2) CPU load”

    echo “3) Memory free”

    echo “0) Exit”

    echo “——————————————–”

    echo -n “Enter you chose [0-3]:”

    read NUM

    

    if [ ${NUM} -lt 0 -o ${NUM} -gt 3 ]

    then

        echo “This is not between 0-3.”

    else

        if [ "${NUM}" == "1" ]

        then

            echo “`date +%T`”

        else

            if [ "${NUM}" == "2" ]

        then

            echo “`uptime | awk -F ‘[,:]‘ ‘{print $7}'`”

            else

            if [ "${NUM}" == "3" ]

            then

            echo “`free -m | awk ‘$1==”Mem:”{print $4}'`”

            else

                exit

            fi

        fi

        fi

    fi

本節(jié)課回顧:

    條件測(cè)試的類型

        文件測(cè)試

        文本測(cè)試

        數(shù)值測(cè)試

        邏輯測(cè)試

    if…else…fi條件選擇結(jié)構(gòu)

    case…in…esac

課后測(cè)試

1、修改menu.sh 采用非菜單式,參數(shù)傳遞方式來進(jìn)行選擇。 例如 #./menu.sh 1 輸出時(shí)間

2、使用case方式來實(shí)現(xiàn)該菜單選擇方式

Sudu答案:(難免會(huì)有錯(cuò)誤,但是可以實(shí)現(xiàn)成功)

1、修改menu.sh后得出

    #!/bin/bash        

if [ $1 -lt 0 -o $1 -gt 3 ]

then

        echo “This is not between 0-3.”

else

        if [ "$1" == "1" ]

        then

            echo “`date +%T`”

        else

            if [ "$1" == "2" ]

            then

                echo “`uptime | awk -F ‘[,:]‘ ‘{print $7}'`”

            else

                if [ "$1" == "3" ]

                then

            echo “`free -m | awk ‘$1==”Mem:”{print $4}'`”

            else

                exit

            fi

        fi

        fi

fi

2、    #!/bin/bash

clear

echo “——————–menu—————–”

echo “1) Show Time”

echo “2) CPU load”

echo “3) Memory free”

echo “0) Exit”

echo “——————————————–”

echo -n “Enter you chose [0-3]:”

read NUM

case $NUM in

        1) date +%T;;

        2) uptime | awk -F ‘[,:]‘ ‘{print $7}';;

        3) free -m | awk ‘$1==”Mem:”{print $4}';;

        0) exit ;;

        *) echo “This is not between 0-3.” ;;

esac

今天收獲還是比較多的。 半個(gè)小時(shí)的教程看了將近3個(gè)小時(shí)。

雖然說if…else…fi比較容易理解,但是用case感覺簡單很多,呵呵,看個(gè)人喜好吧。

每天看來看一節(jié)教程就足夠了。 看多了頭也會(huì)暈的。 呵呵。 繼續(xù)學(xué)習(xí)吧~

您可能感興趣的文章:
  • linux shell數(shù)組深入學(xué)習(xí)理解
  • linux shell腳本學(xué)習(xí)xargs命令使用詳解
  • Linux學(xué)習(xí)之CentOS(一)----在VMware虛擬機(jī)中安裝CentOS 7(圖文教程)
  • linux Shell學(xué)習(xí)筆記第一天
  • Linux shell腳本基礎(chǔ)學(xué)習(xí)詳細(xì)介紹(完整版)
  • linux Shell學(xué)習(xí)筆記第四天
  • linux Shell學(xué)習(xí)筆記第五天
  • linux Shell學(xué)習(xí)筆記最后一節(jié),溫故與知新
  • linux Shell學(xué)習(xí)筆記第二天
  • linux命令學(xué)習(xí)之10個(gè)網(wǎng)絡(luò)命令和監(jiān)控命令
  • Linux學(xué)習(xí)資料下載(電子書籍)
  • linux shell腳本基礎(chǔ)知識(shí)學(xué)習(xí)
  • Linux學(xué)習(xí)基礎(chǔ)教程
  • Linux命令學(xué)習(xí)總結(jié):詳解shutdown命令
  • Linux命令學(xué)習(xí)總結(jié):詳解reboot命令
  • Linux學(xué)習(xí)第一天——ssh登錄和軟件安裝詳解
  • 個(gè)人學(xué)習(xí)Linux知識(shí)總結(jié)
  • 快速自學(xué)Linux命令的4種方法

標(biāo)簽:臺(tái)州 武威 濟(jì)寧 汕頭 泰安 安徽 廣東 濟(jì)源

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux Shell學(xué)習(xí)筆記第三天》,本文關(guān)鍵詞  linux,Shell,學(xué)習(xí),筆記,第三天,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《linux Shell學(xué)習(xí)筆記第三天》相關(guān)的同類信息!
  • 本頁收集關(guān)于linux Shell學(xué)習(xí)筆記第三天的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章

    上一篇:linux Shell學(xué)習(xí)筆記第二天

    下一篇:linux Shell學(xué)習(xí)筆記第四天

    高碑店市| 房产| 柳江县| 潼关县| 杂多县| 随州市| 桂阳县| 进贤县| 平罗县| 蒲江县| 黄石市| 松阳县| 阿拉尔市| 于都县| 柳江县| 泰宁县| 镇巴县| 林西县| 宁国市| 枣庄市| 东至县| 铁岭市| 陵水| 日喀则市| 华宁县| 岐山县| 富民县| 亚东县| 老河口市| 东海县| 南宫市| 新乐市| 多伦县| 铁力市| 保亭| 津市市| 蓬溪县| 正宁县| 定边县| 奎屯市| 社会|