1.條件測試語句能夠讓Shell腳本根據實際工作靈活調整工作內容,例如判斷系統的狀態后執行指定的工作,或創建指定數量的用戶,批量修改用戶密碼,這些都可以讓Shell腳本通過條件測試語句完成。
if條件語句
if條件語句分為單分支結構、雙分支結構、多分支結構,復雜度逐級上升,但卻可以讓Shell腳本更加的靈活。
單分支結構:
由if、then、fi關鍵詞組成,只在條件成立后執行。
單分支if語句:判斷目錄是否存在,若不存在則自動創建。
編寫Shell腳本並寫入下面的語句:
#!/bin/bash DIR="/home/jacun" if [ ! -e $DIR ] then mkdir -p $DIR fi
執行腳本:
sh DemoCreateFolder.sh
查看該目錄是否被創建:
ls -d /home/jacun
雙分支結構
由if、then、else、fi關鍵詞組成,做條件成立或條件不成立的判斷。
雙分支if語句:判斷指定主機能否ping通,根據返回結果分別給予提示或警告。
為了減少用戶的等待時間,需要為ping命令追加-c參數代表發送數據包的個數,-i代表每0.2秒發送一個數據包,-W則為3秒即超時。而$1為用戶輸入的第一個參數(IP地址),$?為上一條命令的執行結果,判斷是否等於0(即成功)。
#!/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
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
vim DemoGrade.sh
編輯內容:
#!/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