從零開始學習Linux(四十七):Shell編程之流程控制if語句

1、單分支if條件語句

1.1、格式一
if [ 條件表達式 ];then
    程序
fi
1.2、格式二
if [ 條件表達式 ]
    then 
        程序 
fi 

注意:

  • if語句使用fi結(jié)尾;
  • [ 條件表達式 ] 就是前面章節(jié)中將的條件判斷,所以中括號和條件表達式之間必須有空格;
  • then后面跟符合條件之后要執(zhí)行的程序,可以放在[]之后,用“;”分割。也可以換行寫;
1.3、判斷根分區(qū)空間使用率

現(xiàn)在我們編寫一個根分區(qū)空間使用率的shell腳本。
腳本作用:當空間使用率大于某個值的時候,要給報出警告。

1.3.1、獲取空間使用率

第一步執(zhí)行命令,輸出空間使用情況:

df -h

執(zhí)行結(jié)果如下圖所示:

根分區(qū)為/dev/vda1,不同的系統(tǒng)結(jié)果可能不一樣。以實際執(zhí)行命令結(jié)果為準。

第二步執(zhí)行命令,篩選出根分區(qū)使用情況:

df -h | grep "/dev/vda1"

第三步執(zhí)行命令,輸出空間使用率:

df -h | grep "/dev/vda1" | awk '{print $5}'

第四步執(zhí)行命令,去除百分號只截取數(shù)值:

df -h | grep "/dev/vda1" | awk '{print $5}' | cut -d "%" -f1

最終結(jié)果:

1.3.2、編寫shell腳本

創(chuàng)建腳本countrate.sh,內(nèi)容如下:

#!/bin/bash
#統(tǒng)計根分區(qū)空間使用情況

#定義變量,把根分區(qū)使用率賦值給rate
rate=$(df -h | grep "/dev/vda1" | awk '{print $5}' | cut -d "%" -f1)

#判斷使用率大于80則輸出警告
if [ $rate -ge 80 ]
        then
                echo "警告!??!根分區(qū)滿了"
fi

給腳本賦予執(zhí)行權(quán)限:

chmod 755 countrate.sh

執(zhí)行腳本沒有任何輸出。

將腳本判斷規(guī)則更改為大于6%的時候報警,再次執(zhí)行腳本。執(zhí)行結(jié)果如下圖所示:

2、雙分支if條件語句

命令格式如下:

if [ 條件表達式] 
   then 
        條件成立時,執(zhí)行的程序 
   else 
        條件不成立時,執(zhí)行的另一個程序
fi 
2.1、判斷apache是否啟動
2.1.1、獲取apache運行狀態(tài)

在此處,我們使用nmap命令掃描服務(wù)器并截取apache服務(wù)的狀態(tài)。服務(wù)器默認是沒有安裝nmap的,需要自行安裝。

執(zhí)行命令,安裝nmap:

yum -y install nmap

第一步執(zhí)行命令,掃描服務(wù)器獲取到所有的掃描結(jié)果:

nmap -sT 服務(wù)器IP地址

第二步執(zhí)行命令,篩選出http服務(wù):

nmap -sT 服務(wù)器IP地址 | grep http | grep tcp

第二步執(zhí)行命令,獲取到服務(wù)狀態(tài):

nmap -sT 服務(wù)器IP地址 | grep http | grep tcp | awk '{print $2}'
2.1.2、編寫驗證apache服務(wù)狀態(tài)shell腳本

腳本內(nèi)容如下所示:

#!/bin/bash

#定義狀態(tài)變量并且賦值

state=$(nmap -sT 140.143.127.162 | grep http | grep tcp | awk '{print $2}')

if [ "$state" == "open" ]
        then
                echo "$(date) http is ok!!!" >> /tmp/http-acc.log
        else
                /etc/rc.d/init.d/httpd start &>/dev/null
                echo "$(date) http is restart!!!" >> /tmp/http-err.log
fi

給腳本賦予執(zhí)行權(quán)限:

 chmod 755 checkapache.sh

執(zhí)行腳本,然后在/tmp目錄下面可以看到相關(guān)的日志文件。

3、多分支if條件語句

命令格式如下:

if [ 條件表達式1 ] 
            then 
                    當條件表達式1成立時,執(zhí)行程序1 
elif [ 條件表達式2 ] 
            then
                    當條件表達式2成立時,執(zhí)行程序2
...省略更多條件... 
else 
                    當所有條件都不成立時,最后執(zhí)行此程序
fi
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容