溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Shell編程中的條件語句有哪些

發(fā)布時間:2020-06-06 21:25:19 來源:億速云 閱讀:251 作者:Leah 欄目:系統(tǒng)運(yùn)維

Linux Shell編程中的條件語句有哪些?針對這個問題,今天小編總結(jié)這篇有關(guān)條件語句的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

條件測試

  • 文件測試
  • 整數(shù)測試
  • 字符串與邏輯測試

IF語句

  • if單分支語句
  • if雙分支語句
  • if多分支語句
  • if嵌套

條件測試操作

test命令
  • 測試特定的表達(dá)式是否成立,當(dāng)條件成立時,測試語句的返回值為0,否則為其他數(shù)值
格式1: test 條件表達(dá)式
格式2: [ 條件表達(dá)式 ]      //至少應(yīng)有一個空格
文件測試
[ 操作符 文件或目錄 ]
常用的測試操作符
  • -d:測試是否為目錄
  • -e:測試目錄或文件是否存在
  • -f:測試是否為文件
  • -r:測試當(dāng)前用戶是否有權(quán)限讀取
  • -w:測試當(dāng)前用戶是否有權(quán)限寫入
  • -x:測試當(dāng)前用戶是否有權(quán)限執(zhí)行
[root@localhost ~]# [ -d /media/cdrom ]
[root@localhost ~]# echo $?
0                                             //返回0表示條件成立
[root@localhost ~]# [ -d /media/cdrom/Server ]
[root@localhost ~]# echo $?
1                                             //返回1表示條件不成立
[root@localhost ~]# [ -d /media/cdrom ] && echo "YES"     //&&邏輯與,“而且”的意思
YES
整數(shù)值比較
[ 整數(shù)1 操作符 整數(shù)2]
常用的測試操作符
  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -le:小于或等于
  • -ge:大于或等于
[root@localhost ~]# who |wc -l
7
[root@localhost ~]# [ $(who |wc -1) -gt 5] && echo "Too many."   //用戶數(shù)是否>5
Too many.
[root@localhost ~]# [ $(who |wc -1) -ge 10 ] && echo">= 10."      //用戶數(shù)是否>=10
[root@localhost ~]# FreeCC=$(free -m | grep "Mem:”| awk '{print $6}`)
[root@localhost ~]# [ $FreeCC -It 1024 ] && echo ${FreeCC}MB        //空閑內(nèi)存是否< 1024MB  
275MB
字符串比較
  • 格式1

    [ 字符串1 = 字符串2 ]
    [ 字符串1 != 字符串2 ]
  • 格式2

    [ -z 字符串 ]
常用的測試操作符
  • =:字符串內(nèi)容相同
  • !=:字符串內(nèi)容不同,!號表示相反的意思
  • -z:字符串內(nèi)容為空
[root@localhost ~]# echo $LANG            //測試當(dāng)前語言環(huán)境
zh_ CN.UTF-8
[root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
[root@localhost ~]# read -p“是否覆蓋現(xiàn)有文件(yes/no) ?”ACK    //測試讀入的字符串是否為yes
是否覆蓋現(xiàn)有文件(yes/no) ? yes
[root@localhost ~]# [ $ACK = "yes" ] && echo "覆蓋"
覆蓋
邏輯測試
格式1:[ 表達(dá)式1 ] 操作符號 [ 表達(dá)式2 ]...
格式2:命令1 操作符 命令2...
常用的測試操作符
  • -a或&&:邏輯與,“而且”的意思
  • -o或||:邏輯或,“或者”的意思
  • ?。哼壿嫹?/li>
[root@localhost ~]#[ -dletc ] && [-r /etc] && echo “You can open it“
[root@localhost~]#[ -d/etc ] II [-d /home] && echo “ok"

if語句的分支結(jié)構(gòu)

單分支結(jié)構(gòu)
if 條件測試操作    
  then  命令序列     
fi                                
單分支if語句
  • 判斷掛載點(diǎn)目錄,若不存在則自動創(chuàng)建
    [root@localhost ~]# vim test01.sh
    #!/bin/bash
    dir="/mnt/aaa/"
    if [ !-d $dir ]              //當(dāng)目錄不存在時執(zhí)行
    then
    mkdir -p $dir
    if
    雙分支結(jié)構(gòu)
if  條件測試操作
  then  命令序列1
  else  命令序列2
fi
雙分支if語句
  • 判斷目標(biāo)主機(jī)是否存活,顯示檢測結(jié)果
root@localhost ~]# vim test02.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then                                  //判斷ping命令的檢測結(jié)果,分別給出不同的提示
  echo "Host $1 is up."
else
  echo "Host $1 is down."
fi
多分支結(jié)構(gòu)
if 條件測試操作1
  then 命令序列1
elif 條件測試操作2
  then 命令序列2
else
  命令序列3
fi
多分支if語句
  • 判斷分?jǐn)?shù)范圍,分出優(yōu)秀、合格、不合格三檔

  • [root@localhost ~]# vim test03.sh
    #!/bin/bash
    read -p "請輸入您的分?jǐn)?shù)(0-100):" a
    if [ $a -ge 85 ]&&[ $a -le 10 ]
    then
    echo"$a分,優(yōu)秀!"                      //判斷分?jǐn)?shù)所在區(qū)間,給出不同的分檔結(jié)果
    elif[ $a -ge 70 ]&&[ $a -le 84 ]
    then
    echo"$a分,合格!"
    else
    echo"$a分,不合格!"
    fi
  • 看完上述內(nèi)容,你們對Shell編程中的條件語句有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI