99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

4.3.1 if條件測試語句

2023-05-11 14:48 更新

if條件測試語句可以讓腳本根據實際情況自動執(zhí)行相應的命令。從技術角度來講,if語句分為單分支結構、雙分支結構、多分支結構;其復雜度隨著靈活度一起逐級上升。

if條件語句的單分支結構由if、then、fi關鍵詞組成,而且只在條件成立后才執(zhí)行預設的命令,相當于口語的“如果……那么……”。單分支的if語句屬于最簡單的一種條件判斷結構,語法格式如圖4-17所示。

圖4-17 單分支的if語句

下面使用單分支的if條件語句來判斷/media/cdrom文件是否存在,若存在就結束條件判斷和整個Shell腳本,反之則去創(chuàng)建這個目錄:

    [root@linuxprobe ~]# vim mkcdrom.sh
    #!/bin/bash
    DIR="/media/cdrom"
    if [ ! -e $DIR ]
    then
    mkdir -p $DIR
    fi

由于第5章才講解用戶身份與權限,因此這里繼續(xù)用“bash 腳本名稱”的方式來執(zhí)行腳本。在正常情況下,順利執(zhí)行完腳本文件后沒有任何輸出信息,但是可以使用ls命令驗證/media/cdrom目錄是否已經成功創(chuàng)建:

    [root@linuxprobe ~]# bash mkcdrom.sh
    [root@linuxprobe ~]# ls -d /media/cdrom
    /media/cdrom

if條件語句的雙分支結構由if、then、else、fi關鍵詞組成,它進行一次條件匹配判斷,如果與條件匹配,則去執(zhí)行相應的預設命令;反之則去執(zhí)行不匹配時的預設命令,相當于口語的“如果……那么……或者……那么……”。if條件語句的雙分支結構也是一種很簡單的判斷結構,語法格式如圖4-18所示。

圖4-18 雙分支的if條件語句

下面使用雙分支的if條件語句來驗證某臺主機是否在線,然后根據返回值的結果,要么顯示主機在線信息,要么顯示主機不在線信息。這里的腳本主要使用ping命令來測試與對方主機的網絡聯(lián)通性,而Linux系統(tǒng)中的ping命令不像Windows一樣嘗試4次就結束,因此為了避免用戶等待時間過長,需要通過-c參數來規(guī)定嘗試的次數,并使用-i參數定義每個數據包的發(fā)送間隔,以及使用-W參數定義等待超時時間。

    [root@linuxprobe ~]# vim chkhost.sh
    #!/bin/bash
    ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
    if [ $? -eq 0 ]
    then
    echo "Host $1 is On-line."
    else
    echo "Host $1 is Off-line."
    fi

我們在4.2.3小節(jié)中用過$?變量,作用是顯示上一次命令的執(zhí)行返回值。若前面的那條語句成功執(zhí)行,則$?變量會顯示數字0,反之則顯示一個非零的數字(可能為1,也可能為2,取決于系統(tǒng)版本)。因此可以使用整數比較運算符來判斷$?變量是否為0,從而獲知那條語句的最終判斷情況。這里的服務器IP地址為192.168.10.10,我們來驗證一下腳本的效果:

    [root@linuxprobe ~]# bash chkhost.sh 192.168.10.10
    Host 192.168.10.10 is On-line.
    [root@linuxprobe ~]# bash chkhost.sh 192.168.10.20
    Host 192.168.10.20 is Off-line.

if條件語句的多分支結構由if、then、else、elif、fi關鍵詞組成,它進行多次條件匹配判斷,這多次判斷中的任何一項在匹配成功后都會執(zhí)行相應的預設命令,相當于口語的“如果……那么……如果……那么……”。if條件語句的多分支結構是工作中最常使用的一種條件判斷結構,盡管相對復雜但是更加靈活,語法格式如圖4-19所示。 第4章 Vim編輯器與Shell命令腳本。第4章 Vim編輯器與Shell命令腳本。

圖 4-19 多分支的if條件語句

下面使用多分支的if條件語句來判斷用戶輸入的分數在哪個成績區(qū)間內,然后輸出如Excellent、Pass、Fail等提示信息。在Linux系統(tǒng)中,read是用來讀取用戶輸入信息的命令,能夠把接收到的用戶輸入信息賦值給后面的指定變量,-p參數用于向用戶顯示一定的提示信息。在下面的腳本示例中,只有當用戶輸入的分數大于等于85分且小于等于100分,才輸出Excellent字樣;若分數不滿足該條件(即匹配不成功),則繼續(xù)判斷分數是否大于等于70分且小于等于84分,如果是,則輸出Pass字樣;若兩次都落空(即兩次的匹配操作都失敗了),則輸出Fail字樣:

    [root@linuxprobe ~]# vim chkscore.sh
    #!/bin/bash
    read -p "Enter your score(0-100):" GRADE
    if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
    echo "$GRADE is Excellent"
    elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
    echo "$GRADE is Pass"
    else
    echo "$GRADE is Fail" 
    fi
    [root@linuxprobe ~]# bash chkscore.sh
    Enter your score(0-100):88
    88 is Excellent
    [root@linuxprobe ~]# bash chkscore.sh 
    Enter your score(0-100):80
    80 is Pass

下面執(zhí)行該腳本。當用戶輸入的分數分別為30和200時,其結果如下:

    [root@linuxprobe ~]# bash chkscore.sh  
    Enter your score(0-100):30
    30 is Fail
    [root@linuxprobe ~]# bash chkscore.sh
    Enter your score(0-100):200 
    200 is Fail

為什么輸入的分數為200時,依然顯示Fail呢?原因很簡單—沒有成功匹配腳本中的兩個條件判斷語句,因此自動執(zhí)行了最終的兜底策略??梢?,這個腳本還不是很完美,建議讀者自行完善這個腳本,使得用戶在輸入大于100或小于0的分數時,給予Error報錯字樣的提示。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號