shell中的條件選擇和判斷語句
1、條件選擇if語句
1.1、用法格式
if 判斷條件1 ; then 條件爲真的分支代碼 elif 判斷條件2 ; then 條件爲真的分支代碼 elif 判斷條件3 ; then 條件爲真的分支代碼 else 以上條件都爲假的分支代碼 fi
逐條件進行判斷,第一次遇爲“真”條件時,執行其分支,而後結束整個if語句。
1.2、經典案例
1、判斷年紀
#!/bin/bash read -p "請輸入你的年齡:" age if [[ $age =~ [^0-9] ]];then echo "請輸入整數!!!" exit 10 elif [ $age -ge 150 ];then echo "你輸入的年齡超出範圍,請輸入正確的年齡!!!" exit 20 elif [ $age -ge 18 ];then echo "你的年齡大於18歲。" else echo "你的年齡小於18歲。" fi
分析:請輸入年紀,先判斷輸入的是否含有除數字以外的字符,有,就報錯;沒有,繼續判斷是否小於150,是否大於等於18。
2、判斷學生成績
#!/bin/bash #判斷學生成績是否及格 read -p "請輸入你的成績:" score if [[ $score =~ [^0-9] ]];then echo "請輸入一個整數!!!" exit 10 elif [ $score -gt 100 ];then echo "你輸入的成績超出總分範圍,請重新輸入!!!" exit 20 elif [ $score -ge 85 ];then echo "你的成績非常好,請繼續保持!!!" elif [ $score -ge 70 ];then echo "你的成績已經及格,請繼續努力!!!" else echo "你的成績不及格,請繼續努力!!!" fi
分析:請輸入成績,先判斷輸入的是否含有除數字以外的字符,有,就報錯;沒有,繼續判斷是否大於100,是否大於85,是否大於70。
2、條件判斷 case
2.1、case結構條件句語法
case $name in; PART1) cmd ;; PART2) cmd ;; *) cmd ;; esac
注意:case 支持glob 風格的通配符:
* : 表示任意長度任意字符
? : 表示任意單個字符
[] :指定範圍內的任意單個字符
a|b : a 或b
2.2、case結構條件句範例
例1:判斷輸入的是yes還是no
#!/bin/bash read -p "請輸入yes或no:" anw case "$anw" in [yY][eE][sS]|[yY]) echo "輸入的爲:yes" ;; [nN][oO]|[nN]) echo "輸入的爲:no" ;; *) echo "輸入錯誤,請重新輸入" ;; esac
分析:請輸入yes or no,回答Y/y、yes各種大小寫組合爲yes;回答n/N、no等各種大小寫組合爲no