語法格式:
if [條件判斷式];then程式fi
或者
if[條件判斷式]
then
程式fi
在使用單分支 if 條件查詢時需要注意幾點:
示例:通過指令碼判斷根分割槽的使用率是否超過 80%,如果超過 80% 則向管理員報警。 :
[root@localhost ~]# df -h#檢視一下伺服器的分割槽狀況
檔案系統 容量 已用 可用 已用% %掛載點
/dev/sda3 20g 1.8g 17g 10% /tmpfs 306m
0 306m 0% /dev/shm
/dev/sda1 194m 26m 158m 15% /boot
/dev/sro 3.5g 3.5g 0100% /mnt/cdrom
[root@localhost ~]# vi
sh/if1.sh
#!/bin/bash
#統計根分割槽的使用率
rate=$(df -h | grep
"/dev/sda3
" | awk
'' | cut -d"
%"-f1)
#把根分割槽使用率作為變數值賦予變數rate
if [$rate -ge 80
】#判斷rate的值,如果大於等於80,則執行then程式
then
echo
'warning! /dev/sda3 is full!!"
#列印警告資訊。在實際工作中,也可以向管理員傳送郵件
fi
"rate=$(df-h|grep "/dev/sda3"|awk''|cut-d"%"-f1)"命令:先使用"df-h"列出系統中的分割槽情況;然後使用"grep"命令提取出根分割槽行;再使用"awk"命令列出第五列,也就是根分割槽使用率這一列(不過使用率是 10%,不好比較,還要提取出 10 這個數字);最後使用"cut"命令(cut 命令比 awk 命令簡單),以"%"作為分隔符,提取出第一列。
在雙分支 if 條件語句中,當條件判斷式成立時,則執行某個程式;當條件判斷式不成立時,則執行另乙個程式。語法如下:
if[條件判斷式]
then
當條件判斷式成立時,執行的程式
else
當條件判斷式不成立時,執行的另乙個程式
fi
示例:
#!/bin/bash#判斷輸入的檔案是否是乙個目錄
read -t 30 -p "
please input a directory:
"dir
#read接受鍵盤的輸入,並存入dir變數
if[-d $dir
]#測試$dir中的內容是否是乙個目錄
then
echo
"yes
"#如果是乙個目錄,則輸出yes
else
echo"no
"#如果不是乙個目錄,則輸出no
fi
在多分支 if 條件語句中,允許執行多次判斷。也就是當條件判斷式 1 成立時,執行程式 1;當條件判斷式 2 成立時,執行程式 2;依次類推,當所有條件不成立時,執行最後的程式。語法如下:
if[條件判斷式1]
then
當條件判斷式1成立時,執行程式1
elif
[條件判斷式2]
then
當條件判斷式2成立時,執行程式2
…省略更多條件...
else
當所有條件都不成立時,最後執行此程式、
fi
示例:用多分支 if 條件語句來判斷使用者輸入的是乙個個檔案還是乙個目錄。
[root@localhost ~]#vish/if-elif.sh
#!/bin/bash
#判斷使用者輸入的是什麼檔案
read -p "
please input a filename:
"file
#接收鍵盤的輸入,並賦予變數file
if[-z "
$file"]
#判斷file變數是否為空
then
echo
"error,please input a filename
"#如果為空,則執行程式1,也就是輸出報錯資訊、
exit
1#退出程式,並定義返回值為1 (把返回值賦予變數$?)
elif[!-e "
$file"]
#判斷file的值是否存在
then
echo
'your input is not a file!"
#如果不存在,則執行程式2
exit
2#退出程式,並定義返回值為2
elif[-f "
$file"]
#判斷file的值是否為普通檔案
then
echo
"$file is a regulare file!
"#如果是普通檔案,則執行程式3
elif[-d"
$file"]
#判斷file的值是否為目錄檔案
then
echo
"$file is a directory!
"#如果是目錄檔案,則執行程式4
else
echo is an other file!"
#如果以上判斷都不是,則執行程式5
fi
exit 命令是退出執行程式的命令,如果符合條件 1(沒有輸入)和條件 2(輸入的不是檔案),則需要執行 exit 命令;否則程式還是會執行一下指令碼的。至於 exit 後面的返回值,是自由定義的,主要用於把返回值賦予變數 $?。
示例:
[root@localhost ~]# chmod755sh/if-elif.sh
#賦予執行許可權
[root@localhost ~]# sh/if-elif.sh
#執行指令碼
please input a filename:
#沒有任何輸入
error,please input a filename
#報錯資訊是指令碼中自己定義的
[root@localhost ~]# echo $?
1#變數$?的返回值是我們自己定義的1
[root@localhost ~]# sh/if-elif.sh
please input a filename: jkgeia
#隨便輸入不是檔案的字串
your input is not a
file!#報錯資訊是自己定義的
[root@localhost ~]# echo $?
2#變數$?的返回值是我們自己定義的2
case 語句和 if...elif...else 語句一樣都是多分支條件語句,不過和多分支 if 條件語句不同的是,case 語句只能判斷一種條件關係,而 if 語句可以判斷多種條件關係。
case 語句的語法如下:
case $變數名 in"值 1")
;;如果變數的值等於值1,則執行程式1,值2"
)如果變數的值等於值2,則執行程式2
…省略其他分支…
*)如果變數的值都不是以上的值,則執行此程式
;;esac
case 語句會取出變數中的值,然後與語句體中的值逐一比較。如果數值符合,則執行對應的程式;如果數值不符,則依次比較下乙個值;如果所有的值都不符合,則執行"*)"("*"代表所有其他值)中的程式。
case 語句以"case"開頭,以"esac"結尾。
在每個分支程式之後要以";;"(雙分號)結尾,代表該程式段結束。
示例如下:
[root@localhost ~]# vish/case.sh
#!/bin/bash
#判斷使用者輸入
read -p "
please choose yes/no:
" -t 30
cho#在螢幕上輸出
"請選擇yes/no
",然後把使用者選擇賦予變數cho
case $cho in
#判斷變數cho的值
"yes")
#如果是yes
echo
"your choose is yes!
"#則執行程式1
;;"no
")#如果是no
echo
"your choose is no!
"#則執行程式2
;;*)
#如果既不是yes,也不是no
echo
"your choose is error!
"#則執行此程式
;;esac
請使用者輸入 yes 或 no,如果輸入的是 yes,則輸出"your choose is yes!";如果輸入的是 no,則輸出"your choose is no!";如果輸入的是其他字元,則輸出"your choose is error!"。
Linux shell程式設計 條件判斷
太多了,沒記住。每次寫都要去翻,整理一下存到這裡方便查詢。b 檔案 判斷該檔案是否存在,並且是否為塊裝置檔案 是塊裝置檔案則為真 c 檔案 判斷該檔案是否存在,並且是否為字元裝置檔案 是字元裝置檔案為真 d 檔案 判斷該檔案是否存在,並且是否為目標檔案 是目錄為真 e 檔案 判斷該檔案是否存在 存在...
Linux shell程式設計中的判斷條件
b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...
linux shell 指令碼程式設計 條件語句學習
1.if 條件語句學習 if 表示式 if variable in array 語句1else 語句2fi 1.例子 bin bash num 100 if num 4 then 表示比較大小 echo this num is num greater 4 fi邏輯運算子解析 f 判斷檔案是否存在 i...