shell中的條件選擇和判斷語句

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.1case結構條件句語法

case $name in;
PART1)
  cmd
  ;;
PART2)
  cmd
  ;;
*)
  cmd
  ;;
esac

 

注意:case 支持glob 風格的通配符:

   * : 表示任意長度任意字符

  ? : 表示任意單個字符

  [] :指定範圍內的任意單個字符

  a|b : a b

2.2case結構條件句範例

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/yyes各種大小寫組合爲yes;回答n/Nno等各種大小寫組合爲no

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章