Shell條件語句之if語句、case語句
一、i f 語句
1. 單分支if語句
條件判斷語句,用條件來控制判斷是否執行命令
語句格式:
if 條件測試 #用來篩選是否進入命令序列
then 命令序列 #這裏是滿足條件測試後執行的命令
fi #fi是結尾
注意:以 i f 開始 就要記得以f i 結束,這兩個是一對,少寫就報錯。
示例
這裏的-gt是大於,-ge纔是大於等於
2. 雙分支 i f 語句
一般的格式:
if 條件測試 #用來篩選是否進入命令序列
then 命令序列1 #這裏是滿足條件測試後執行的命令
else 命令序列2 #這是是不滿足條件所執行的命令,如果沒有命令,則不執行直接結束。
fi #fi是結尾
3. 多分支結構
由於判斷分區更加精細的需要,用多分支線結構來進行分類輸出。
即:滿足第一個條件測試後,再次進行篩選,以此類推。
這裏用一個簡單多分支結構來實驗
#!/bin/bash
#學習成績的分檔
read -p "請輸入您的分數(0-100):" score
if [ $score -ge 0 ] && [ $score -le 100 ]
then
if [ $score -ge 90 ] && [ $score -le 100 ]
then
echo " 恭喜得到$score分,棒! "
elif [ $score -ge 70 ] && [ $score -le 89 ]
then
echo "得到$score分,再接再厲!"
elif [ $score -ge 60 ] && [ $score -le 69 ]
then
echo "僅僅及格,你這不點贊收藏? "
elif [ $score -ge 0 ] && [ $score -le 59 ]
then
echo "得到$score分,就這點分還來白嫖?快去一鍵三連! "
fi
else
echo " 請正確輸入! "
fi
這裏具體輸入測試以下結果:
二、case語句多分枝結構
(執行效率比if快,它直接去找相關的滿足的條件,而if一條一條往下找,會慢一點)
一般的格式:
case 變量值 in
模式 1) #符合模式1時,執行命令1
命令序列 1 #這裏是一個具體的命令1
;; #這裏表示命令序列1的結束
模式 2)
命令序列 2
;;
......
*) #默認其他沒有模式的執行
默認命令序列
esac #反寫case固定格式
模式中可以使用方括號表示一個連續的範圍,如"[ 0-9 ]"
#!/bin/bash
#case測試
read -p "請輸入你的ACP成績(0-100):" score
case $score in
[89][0-9]|100)
echo "$score,可以通過!"
;;
[1-7][0-9])
echo "$score,同志仍需努力"
;;
[0-9])
echo "$score,同志仍需努力"
;;
*)
echo "請正確輸入分數"
esac
注意:shell腳本中 一定要注意空格的使用比如在[]中別忘記加空格等。