shell指令碼中的if條件語句介紹和使用案例

2021-10-04 15:04:39 字數 4339 閱讀 1683

#前言:在生產工作中if條件語句是最常使用的,如使用來判斷服務狀態,監控伺服器的cpu,記憶體,磁碟等操作,所以我們需要熟悉和掌握if條件語句。

簡介if條件語句,簡單來說就是:如果,那麼。有if單分支結構,雙分支結構,多分支結構

1.單分支結構

#語法結構:

if 《條件表示式》

then

指令fi

或if 《條件表示式》;then

指令fi

或if 《條件表示式》

then

if 《條件表示式》

then

fifi

#簡單記憶法:

如果 《你給我足夠多的錢》

那麼我就給你幹活

果如#說明:《條件表示式》 可以是test、、、(())等條件表示式,每乙個if條件語句都是以if開頭,並帶有then,最後以fi結尾

#例子:

[root@shell scripts]# cat if.sh

#!/bin/bash

if [ -f /etc/hosts ]

then

echo 「[guoke1]」

fiif [[ -f /etc/hosts ]];then

echo 「[[guoke2]]」

fiif test -f /etc/hosts

then

echo 「guoke3」

fi#說明:上面都是判斷/etc/hosts是否是檔案並是否存在,如果是檔案並且存在就列印相關的命令

#執行效果:

[root@shell scripts]# sh if.sh

[guoke1]

[[guoke2]]

guoke3

#說明:因為/etc/hosts是乙個檔案並且存在,所以輸出後面的相關命令

2.雙分支結構:加乙個else否則

#if單分支結構主體是:如果…那麼…。而雙分支結構就是:如果…那麼…否則

#語法結構

if 《條件表示式》

then

命令集1

else

命令集2

fi#簡單記憶

如果 《你給我足夠多的錢》

那麼我就給你幹活

否則我再考慮一下

果如#例子:

[root@shell scripts]# cat if1.sh

#!/bin/bash

if [ -f /etc/hosts ]

then

echo 「is file」

else

echo 「no file」

fiif [ -f /etc/test ]

then

echo 「is file」

else

echo 「no file」

fi#執行效果

[root@shell scripts]# sh if1.sh

is file

no file

#說明:因為/etc/test這個檔案不存在,所以輸出no file

3.多分支結構

#多分支的主體為,「如果…,那麼…,或者如果…,那麼,否則…」

#語法結構

if 《條件表示式1>

then

指令集1

elif 《條件表示式2>

then

指令集2

else

指令集3

fi#寫多個elif

#簡單記憶

如果 《你有房》

那麼我就嫁給你

或者如果 《你家裡有錢》

那麼我也可以嫁給你

或者如果 《你很努力很吃苦》

那麼我們可以先談談男女朋友

否則我們沒戲

果如#簡單例子:

[root@shell scripts]# cat if2.sh

#!/bin/bash

if [ $1 -eq 1 ]

then

echo 「input 1 success」

elif [ $1 -eq 2 ]

then

echo "input 2 success "

elif [ $1 -eq 3 ]

then

echo 「input 3 success」

else

echo 「input failure」

fi#說明:如果傳入的第乙個引數為1就輸出相關命令,或者有如果傳入的第乙個引數為2,就輸出相關命令,後面同理,最後是否則又輸出什麼

#執行效果

[root@shell scripts]# sh if2.sh 1

input 1 success

[root@shell scripts]# sh if2.sh 2

input 2 success

[root@shell scripts]# sh if2.sh 3

input 3 success

[root@shell scripts]# sh if2.sh 4

input failure

4.if條件語句的使用案例

4.1.檢查軟體包是否安裝

#檢查sysstat包是否安裝

[root@shell scripts]# cat soft_package.sh

#!/bin/bash

if rpm -q sysstat &>/dev/null

then

echo 「sysstat is already installed.」

else

echo 「sysstat is not installed.」

fi#說明:使用if判斷sysstat包有沒有安裝,如果安裝了就列印already installed已經安裝,如果沒有安裝就列印not installed沒有安裝

#執行效果

[root@shell scripts]# sh soft_package.sh

sysstat is already installed.

#檢查mailx包是否安裝

[root@shell scripts]# cat soft_package.sh

#!/bin/bash

if rpm -q mailx &>/dev/null;then

echo 「mailx is already installed.」

else

echo 「mailx is not installed.」

fi#說明:使用if判斷mailx包有沒有安裝,如果安裝了就列印already installed已經安裝,如果沒有安裝就列印not installed沒有安裝

#執行效果

[root@shell scripts]# sh soft_package.sh

mailx is not installed.

4.2.監控httpd服務

fi4.3.監控mysql服務

[root@shell scripts]# cat mysql_mon.sh

#!/bin/bash

if [netstat -untpl | grep mysqld | wc -l-gt 0 ];then

echo 「mysqld is running」

else

echo 「mysqld service down」 | mail -s 「mysqld」 [email protected]

systemctl restart mysqld

fi#然後將寫的監控指令碼放進定時任務裡面,多久執行一次檢查

#例如:每3分鐘執行一遍

*/3 * * * * root /bin/sh /scripts/web.sh &>/dev/null

*/3 * * * * root /bin/sh /scripts/mysql_mon.sh &>/dev/null

#例如:監控系統剩餘記憶體的大小,如果小於200m,就郵件報警,每3分鐘執行一次

思路:1.先在命令列獲取到系統剩餘的記憶體的值

2.配置郵件報警功能

3.進行判斷,如果取到的值小於200m,就報警

4.編寫shell指令碼

5.加入crond定時任務,然後每3分鐘檢查一次

龍華大道1號

Shell指令碼 條件語句

1 檔案測試 2 整數值比較 3 字串與邏輯測試 if語句 單分支的if語句 雙分支的if語句 多分枝的if語句 檔案測試是指的是根據給定的路徑名稱,判斷對應的是檔案還是目錄,或者判斷檔案是否可讀 可寫 可執行等。基本格式 test 條件表示式 或者 條件表示式 檔案的常見操作選項如下 選項 描述 ...

shell指令碼條件語句編寫

第一步 掌握if語句幾種分支 下面的是if最完整的格式了,實際運用中可以根據需要刪減 if condition then action elif conditon then action 中間若干elif else action then action fi這裡有幾點要說明 1 action可以為空...

shell指令碼的條件判斷語句

條件判斷,顧名思義,就是對當前引數進行相關條件的比較,如果符合要求就進行相對應的操作,條件語句涉及到兩種語法,if和case,兩種語法都各具特色,我們可以通過例項來進行比較 if 判斷條件1 then 條件為真的分支 elif 判斷條件2 then 條件為真的分支 elif 判斷條件3 then 條...