Shell(7)-數組和正則表達式的運用


      本篇博客介紹的是shell中數組與正則表達式的做用以及它們的用法 . 每門語言都有屬組與正則表示 , shell也不例外 , 首先咱們來看看數組的做用和用法 :正則表達式


     一 . 數組shell


    數組 , 由名而意就是一組數字 . 當須要賦值100個變量的時候 , 就要定義100個變量名並賦值給它們 , 而用數組的話使用一個名稱就能夠了 , 在數組後跟100個值 , 訪問數組的時候須要使用下標的方式 .vim

 

    1 . 數組的聲明數組

 

        declare  -a   數組名         #聲明數組爲數組類型bash

        declare  -i    變量名         #聲明變量爲整數數字類型ide

        declare  -x    變量名         #聲明變量爲環境變量spa

        declare  -i    變量名         #聲明變量爲readonly類型 , 只讀類型 , 變量的內容不可改blog


    2 . 定義數組(變量值稱爲數組的元數)博客


        方法一 : 一次賦一個值  格式: 數組名[下標]=值it

                    array[0]=1

                    array[1]=2

                    array[2]=3


        方法二 : 一次賦多個值   格式: array=(值1 值2 值3 ..)

                    array=(1 2 3 4 ..)

 

        取消數組 : unset  數組名


     3.訪問數組


         echo  ${array[0]}                                          #訪問數組中的第一個元數

         echo  ${attay[*]}  或 echo  ${array[@]}         #訪問數組中的全部元數 , 數組的遍歷 , 

         echo  ${#attay[*]}  或 echo  ${#array[@]}         #訪問數組中的全部元數 , 數組的遍歷 

         echo  ${array[@]:1}                                        #從數組的下標1開始訪問

         echo  ${array[0]:1:2}                                       #從數組的下標1開始 , 訪問2個元數


         實例 : 定義一個名爲array的數組 , 數組的成員有 1 2 3 4 5

                 image.png


           用數組寫一個shell腳本 , 例如查看水果價格:

           要求 : 輸入蘋果 , 顯示蘋果5元一斤 , 輸入香蕉 , 顯示3元一斤 , 輸入橘子 , 顯示3元一斤 ; 若是輸入的不是這三種水果 , 就提示只能查詢蘋果 , 香蕉 , 橘子

            vim  /cai.sh      #編輯一個名爲cai的腳本 , 內容以下

            image.png

            

            保存退出 , 使用 bash  /cai.sh 命令來運行腳本 , 結果爲 :

            image.png


            這只是一個很是簡單的腳本  , 還能夠在腳本中加入while 讓用戶一直輸入查尋水果名




            

     二 . 正則表達式


      正則表達式 : 真確的規則表達式 , 是用來作關鍵字匹配的 , 它是一種字符模式 , 是在匹配文本時使用一些特殊的符號來匹配用戶想要的東西 , 相似於bash來匹配文本

      

      正則表達式與通配符的區別爲 :應用的場合不一樣

      通配符 : 是用在查找文件名時*或?或[關鍵字]來匹配文件名中不肯定達到字符 , ls /dev/tty[135]?
      正則表達式 : 是用在查看文件內容時 ^ , $ , + , * , ? , [] ,等符號來匹配文件內容中不肯定的字符  


      可以使用正則表達式的命令 : vim , grep , sed , awk


     基本正則表達式元字符

 

     1 . 字符的匹配

元字符 功能 例子 匹配結.果
. 匹配任意單個字符 /l.ve love , live ..
[] 匹配一組字符中的任意一個 /l[Oo]ve/ love , lOve
[^]
表示取反 /[^a-d]ove/
匹配除了aove , bove , cove , dove 以外的全部

     

     2 . 次數的匹配 

元字符 功能 例子 匹配結.果
* 匹配*號左邊的全部字符 /l*ve/ lve , llve ,l//llve..
x\{m\} x(字符), m(數字),匹配xx出現m次
/a\{3\}/ aaa
x\{m,\} 匹配x出現至少m次 /a\{2,\}/
aa , aaa ,aaaa , .....
x\{m,n\} 匹配x出現m次到n次 /a\{2,4\}/ aa , aaa ,aaaa 

     3 . 位置的定位

元字符 功能 例子 匹配結.果
^ 行首定位符 /^root/ 匹配以root開頭的行
$ 行尾定位符 /bash$/ 匹配以bash結尾的行
\< 詞首定位符 /\<love/
匹配lovely , lover , lovexx ..
\> 詞尾定位符 /love\>/ 匹配以love結尾的 , 如xxlove
\ 轉義符號 /2\.5 匹配結果爲2.5
相關文章
相關標籤/搜索