手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Shell編程之條件語句

[日期:2019-10-10] 來源:Linux社區  作者:SiceLc [字體: ]

條件測試

  • 文件測試
  • 整數測試
  • 字符串與邏輯測試

IF語句

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

條件測試操作

test命令

  • 測試特定的表達式是否成立,當條件成立時,測試語句的返回值為0,否則為其他數值
格式1: test 條件表達式
格式2: [ 條件表達式 ]      //至少應有一個空格

文件測試

[ 操作符 文件或目錄 ]

常用的測試操作符

  • -d:測試是否為目錄
  • -e:測試目錄或文件是否存在
  • -f:測試是否為文件
  • -r:測試當前用戶是否有權限讀取
  • -w:測試當前用戶是否有權限寫入
  • -x:測試當前用戶是否有權限執行
[[email protected] ~]# [ -d /media/cdrom ]
[[email protected] ~]# echo $?
0                                             //返回0表示條件成立
[[email protected] ~]# [ -d /media/cdrom/Server ]
[[email protected] ~]# echo $?
1                                             //返回1表示條件不成立
[[email protected] ~]# [ -d /media/cdrom ] && echo "YES"     //&&邏輯與,“而且”的意思
YES

整數值比較

[ 整數1 操作符 整數2]

常用的測試操作符

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -le:小于或等于
  • -ge:大于或等于
[[email protected] ~]# who |wc -l
7
[[email protected] ~]# [ $(who |wc -1) -gt 5] && echo "Too many."   //用戶數是否>5
Too many.
[[email protected] ~]# [ $(who |wc -1) -ge 10 ] && echo">= 10."      //用戶數是否>=10
[[email protected] ~]# FreeCC=$(free -m | grep "Mem:”| awk '{print $6}`)
[[email protected] ~]# [ $FreeCC -It 1024 ] && echo ${FreeCC}MB        //空閑內存是否< 1024MB  
275MB

字符串比較

  • 格式1

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

    [ -z 字符串 ]

常用的測試操作符

  • =:字符串內容相同
  • !=:字符串內容不同,!號表示相反的意思
  • -z:字符串內容為空
[[email protected] ~]# echo $LANG            //測試當前語言環境
zh_ CN.UTF-8
[[email protected] ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
[[email protected] ~]# read -p“是否覆蓋現有文件(yes/no) ?”ACK    //測試讀入的字符串是否為yes
是否覆蓋現有文件(yes/no) ? yes
[[email protected] ~]# [ $ACK = "yes" ] && echo "覆蓋"
覆蓋

邏輯測試

格式1:[ 表達式1 ] 操作符號 [ 表達式2 ]...
格式2:命令1 操作符 命令2...

常用的測試操作符

  • -a或&&:邏輯與,“而且”的意思
  • -o或||:邏輯或,“或者”的意思
  • !:邏輯否
[[email protected] ~]#[ -dletc ] && [-r /etc] && echo “You can open it“
[[email protected]~]#[ -d/etc ] II [-d /home] && echo “ok"

if語句的分支結構

單分支結構

if 條件測試操作    
  then  命令序列     
fi                                

單分支if語句

  • 判斷掛載點目錄,若不存在則自動創建
    [[email protected] ~]# vim test01.sh
    #!/bin/bash
    dir="/mnt/aaa/"
    if [ !-d $dir ]              //當目錄不存在時執行
    then
    mkdir -p $dir
    if

    雙分支結構

if  條件測試操作
  then  命令序列1
  else  命令序列2
fi

雙分支if語句

  • 判斷目標主機是否存活,顯示檢測結果
[email protected] ~]# vim test02.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then                                  //判斷ping命令的檢測結果,分別給出不同的提示
  echo "Host $1 is up."
else
  echo "Host $1 is down."
fi

多分支結構

if 條件測試操作1
  then 命令序列1
elif 條件測試操作2
  then 命令序列2
else
  命令序列3
fi

多分支if語句

  • 判斷分數范圍,分出優秀、合格、不合格三檔
    [[email protected] ~]# vim test03.sh
    #!/bin/bash
    read -p "請輸入您的分數(0-100):" a
    if [ $a -ge 85 ]&&[ $a -le 10 ]
    then
    echo"$a分,優秀!"                      //判斷分數所在區間,給出不同的分檔結果
    elif[ $a -ge 70 ]&&[ $a -le 84 ]
    then
    echo"$a分,合格!"
    else
    echo"$a分,不合格!"
    fi

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2019-10/160961.htm

linux
相關資訊       shell編程 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台