shell腳本之 if,case,for的用法

目錄
一.條件選擇:if語句
二.條件判斷:case語句
三.for循環

一.條件選擇:if語句

  1. 單分支
    if 判斷條件;then
    條件爲真的分支代碼
    fi
    例子:判斷一個數字是否等於10

    #!/bin/bash
       read -p '輸入一個數字' num
       if [ $num -eq 10 ];then
        echo 該數字等於10
        fi
  2. 雙分支
    if 判斷條件; then 條件爲真的分支代碼
    else 條件爲假的分支代碼
    fi
    例子:判斷一個數字是否大於10

            #!/bin/bash
             read -p '輸入一個數字' num
              if [ $num -gt 10 ];then
                   echo 該數字大於10
              else
                    echo 該數字不大於10
                fi
  3. 多分枝
    if 判斷條件1; then 條件爲真的分支代碼
    elif 判斷條件2; then 條件爲真的分支代碼
    elif 判斷條件3; then 條件爲真的分支代碼
    else 以上條件都爲假的分支代碼
    fi
    例子:判斷一個數字的範圍

            #!/bin/bash
            read -p '輸入一個數字' num
            if [ $num -lt 10 ];then
                 echo 該數字小於10
            elif [ $num -ge 10 -a $num -lt 20  ];then
                  echo 該數字大於等於10小於20 
            elif [ $num -ge 20 -a $num -lt 50 ];then
                  cho 該數字大於等於20小於50
             else      
                 echo 該數字大於等於50
            fi      

    二.條件判斷case語句

    • case $變量名 in
      條件1)
      分支1;;
      條件2)
      分支2;;
      默認條件 *)
      默認分支;;
      esac
      每個條件後面跟 )結尾 每個分支後面以 ;; 結束
      例子
      寫一個能判斷yes/no的腳本,(大小寫均能識別,yes九種可能,no四種可能)、

                        #!/bin/bash
                          read -p "請輸入yes|no: " q
                      case $q in
                          [Yy][Ee][Ss]|[Yy])
                         echo "yes";;
                         [Nn][Oo])
                        echo "no";;
                                    *)
                       echo "請輸入正確的格式"
                  esac

      三.for循環

      執行機制:依次將列表中的元素賦值給“變量名”; 每次賦值後即執 行一次循環體; 直到列表中的元素耗盡,循環結束
      for 變量名 in 列表;do
      循環體
      done

    例1 利用for循環 計算1到10所有正整數之和

                   #!/bin/bash
                    let s=0
                     for n in echo {1..10};do
                      s=$[$s+$n]
                       echo $s
                         done

    例2 利用for循環打印99乘法表

                     #!/bin/bash
             for i in {1..9};do
                   for n in `seq 1 $i`;do
                    echo -n -e " $i"x"$n=$[i*n] "
                    done
                     echo
                done
    
    (每一個for要對應一個done)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章