手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Shell編程之case語句與循環語句

[日期:2019-10-12] 來源:Linux社區  作者:SiceLc [字體: ]

Shell編程之case多分支語句

循環語句

  • for循環語句
  • while循環語句
  • untli循環語句

Shell函數

Shell數組

case語句的結構

  • 針對變量的不同取值,分別執行不同的命令序列
case 變量值 in
模式1)
  命令序列1
  ;;
模式2)
  命令序列2
  ;;

  ......
*)
  默認命令序列
esac
[[email protected] ~]# vim demo13.sh      //編輯示例
#!/bin/bash
read -p "請輸入一個字符:" a              //交互指令
case $a in                             //編輯case語句
 [a-z]|[A-Z])                          //模式1
      echo "輸入的是字母"                //輸出提示信息
 ;;
 [0-9])                                //模式2
      echo "輸入的是數字"                //輸出提示信息
 ;;
 *)                                    
      echo "輸入的是特殊符號"
esac                                    //結束語句

for語句結構

  • 讀取不同的變量值,用來逐個執行同一組命令

    for 變量名 in 取值列表
    do
    命令序列
    done
  • 使用場景
    • 指定次數循環 for(int i=0;i<=10;i++)
    • 遍歷循環(增強循環 foreach) for(int num:sum)
[[email protected] ~]# vim demo06.sh
#!/bin/bash
for ((i=1;i<=10;i++))   //循環條件  
do
 echo $i          //輸出i變量
done
[[email protected] ~]# vim aa.txt   //創建txt文檔
zhangsan
wangwu                           //輸入信息
lisi
zhaoliu
~
:wq
[[email protected] ~]# vim demo07.sh     //編輯循環腳本
#!/bin/bash
TMP=$(cat /root/aa.txt)             //設置變量  
for user in $TMP                     //編寫循環
do
 echo "用戶是$user"                  //輸出文檔信息
done

while語句的結構

  • 重復測試某個條件,只要條件成立則反復執行

    while 條件測試操作
    do
    命令序列
    done
[[email protected] ~]# vim demo10.sh
#!/bin/bash
num=1                        //聲明變量
while [ $num -le 10 ]        //編輯while循環
do
 echo $num                  //輸出循環結果
 let num++;                 //等同于num=`expr $num+1`
done

nutil語句結構

  • 重復測試某個條件,只要條件不成立則反復執行

    nutil  條件測試操作
    do
    命令序列
    done
    [[email protected] ~]# vim demo15.sh      
    #!/bin/bash
    i=0                          //設置賦值變量
    s=0
    until [ $i -eq 51 ];do      //編輯until語句
    let s+=i;let i++         //計算1-50的求和過程
    done
    echo $s                     //輸出求和數值

Shell函數

  • 將命令序列按格式寫在一起 (封裝)

  • 可方便重復使用命令序列

  • Shell函數定義

    [function] 函數(){
        命令序列
        [return x]       //使用return或exit可以顯示地結束函數
    }
    [[email protected] ~]# vim demo17.sh
    #!/bin/bash
    sum(){             //設置函數名
    #命令序列
    s=`expr 2 + 2`     //編輯函數命令序列
    echo $s           //輸出計算結果
    }
    sum                 //調用輸出函數
  • 調用函數的方法

    • 函數名 [參數1] [參數2]
[[email protected] ~]# vim demo18.sh
#!/bin/bash
sum(){
  s=`expr $1 + $2`      //使用位置變量計算
  echo $s
}
sum 2 2              //函數名后添加位置變量

Shell數組

應用場景包括

  • 獲取數組長度
  • 獲取元素長度
  • 遍歷元素
  • 元素切片
  • 元素替換
  • 元素刪除
  • ......

數組定義方法

  • 方法一

    數組名=(value0 value1 value2 ...)

  • 方法二

    數組名=([0]=value [1]=value [2]=value ...)

  • 方法三

    列表名="value0 value1 value2 ..."

    數組名=($列表名)

  • 方法四

    數組名[0]="value"

    數組名[1]="value"

    數組名[2]="value"

數組包括的數據類型

  • 數值類型

  • 字符類型

    使用""或''定義

shell數組操作

獲取數組長度

  • ${#數組名[@/*]}
[[email protected] ~]# num=(11 22 33 44 55)    //定義數組
[[email protected] ~]# len=${#num[*]}          //數組長度賦值給len
[[email protected] ~]# echo $len               //輸出數組長度
5

讀取某下標賦值

  • ${數組名[下表]}
[[email protected] ~]# num=(11 22 33 44 55)     //定義數組
[[email protected] ~]# a=${num[0]}              //賦值數組下表
[[email protected] ~]# echo $a                  //輸出下表
11
[[email protected] ~]# a=${num[1]}
[[email protected] ~]# echo $a
22

數組遍歷

[[email protected] ~]# num=(11 22 33 44 55)   //定義數組
[[email protected] ~]# for i in ${num[*]}     //使用for循環遍歷數組
> do   
> echo $i                                  //輸出數組
> done
11
22
33
44
55

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2019-10/160983.htm

linux
相關資訊       shell編程  case語句 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台