Shell指令碼學習筆記5——if條件語句
阿新 • • 發佈:2021-08-11
1.條件測試語句能夠讓Shell指令碼根據實際工作靈活調整工作內容,例如判斷系統的狀態後執行指定的工作,或建立指定數量的使用者,批量修改使用者密碼,這些都可以讓Shell指令碼通過條件測試語句完成。
if條件語句
if條件語句分為單分支結構、雙分支結構、多分支結構,複雜度逐級上升,但卻可以讓Shell指令碼更加的靈活。
單分支結構:
由if、then、fi關鍵片語成,只在條件成立後執行。
單分支if語句:判斷目錄是否存在,若不存在則自動建立。
編寫Shell指令碼並寫入下面的語句:
1 2 3 4 5 6 |
#!/bin/bash
DIR= "/home/jacun"
if [ ! -e $DIR ] then
mkdir -p $DIR
fi
|
執行指令碼:
1 |
sh DemoCreateFolder.sh
|
檢視該目錄是否被建立:
1 |
ls -d /home/jacun
|
雙分支結構
由if、then、else、fi關鍵片語成,做條件成立或條件不成立的判斷。
雙分支if語句:判斷指定主機能否ping通,根據返回結果分別給予提示或警告。
為了減少使用者的等待時間,需要為ping命令追加-c引數代表傳送資料包的個數,-i代表每0.2秒傳送一個數據包,-W則為3秒即超時。而$1為使用者輸入的第一個引數(IP地址),$?為上一條命令的執行結果,判斷是否等於0(即成功)。
1 2 3 4 5 6 7 8 |
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /home/jacun/jacun
if [ $? - eq 0 ]
then
echo "$1 is OK!"
else
echo "$1 is down"
fi
|
1 |
sh DemoPing.sh 192.168.20.47
|
檢測主機IP地址,根據返回值判斷是否OK:
判斷主機出現網路故障:
多分支結構
由if、then、else、elif、fi關鍵片語成。
多分支if語句:
判斷使用者輸入的分數在那個區間內,然後判定為優秀、合格或不及格:
read命令用於將使用者的輸入賦值給指定變數,格式為:(read -p [提示語句] 變數名)
使用read命令讓使用者為GRADE變數賦值,判斷分數必須同時滿足大於85且小於100才輸出"優秀",判斷分數必須同時滿足大於70且小於84才輸出"合格",其餘的情況輸出"不及格"。
建立並編輯DemoGrade.sh
1 |
vim DemoGrade.sh
|
編輯內容:
1 2 3 4 5 6 7 8 |
#!/bin/bash
read -p "請輸入分數(0-100):" GRADE
if [ $GRADE - ge 85 ] && [ $GRADE - le 100 ]; then
echo "$GRADE 優秀"
elif [ $GRADE - ge 70 ] && [ $GRADE - le 84 ]; then
echo "$GRADE 合格"
else echo "$GRADE 不及格"
fi
|