linuxshell編程之數組和字符串處理工具

數組:存放多個元素的連續內存空間。數組

  聲明數組:bash-4之後支持除默認的0,1,2……還能夠自定義索引格式,此類數組稱之爲「關聯數組」  bash

    聲明索引數組:declare -a NAMEblog

    聲明關聯數組:declare -A NAME索引

  索引數組賦值:內存

    索引方式賦值:ARRAY_NAME[INDEX]=value字符串

           ARRAY_NAME=("value1"  "value2" ……)字符串處理

           ARRAY_NAME=value([0]="value1"  [3]="value2")變量

    交互式賦值:read -a  ARRAY_NAME引用

  關聯數組賦值im

    ARRAY_NAME=([INDEX_NAME1]="VALUE1")  [INDEX_NAME2]="VALUE2").....) 

  數組索引:表明元素所在數組的位置屬性,從0開始。

    格式:數組名[索引]

    引用數組中某個元素:${ARRAY_NAME[INDEX]}

       當不給出INDEX時默認值爲0,引用數組中個某一元素值時必定要使用${}。

         

  數組切片:

    ${ARRAY_NAME[@]:offset:number}

      offset:偏移量,要跳過的元素個數  

      number:要取出的元素個數;省略number,表示取偏移量以後的全部元素

  增長元素:

    ARRAY_NAME[${#ARRAY_NAME[*]}]=

      ${ARRAY_NAME[*]}:數組中元素個數

  刪除元素:

    unset ARRAY[INDEX]

 

字符串處理:

  字符串切片:

    ${var:offset:number},取字符串的子串。

    ${var: -length}:從右側取length個字符。

      注意:冒8號後必定要有一個空格。

  基於分隔符取子串

    ${var#*word}:

      word:指定的分隔符。

      功能:自左而右,查找var變量中所存儲的字符串中,第一次出現的word分隔符,刪除字符串開頭至此分隔符之間的全部字符。

    ${var##*word}:     

      word:指定的分隔符。

      功能:自左而右,查找var變量中所存儲的字符串中,最後一次出現的word分隔符,刪除字符串開頭至此分隔符之間的全部字符。

      

    ${var%word*}:

      word:指定的分隔符。

      功能:自右而左,查找var變量中所存儲的字符串中,第一次出現的word分隔符,刪除字符串尾部至此分隔符之間的全部字符。

    ${var%%word*}:

      word:指定的分隔符。

      功能:自右而左,查找var變量中所存儲的字符串中,最後一次出現的word分隔符,刪除字符串尾部至此分隔符之間的全部字符。

      

  查找替換:

    ${var/PATTERN/SUBSTITUTE}:查找var所表示的字符串中,將第一次被PATTERN所匹配的字符串,替換爲SUBSTITUTE所表示的字符串。

    ${var//PATTERN/SUBSTITUTE}:查找var所表示的字符串中,將全部被PATTERN所匹配的字符串,替換爲SUBSTITUTE所表示的字符串。

    ${var/#PATTERN/SUBSTITUTE}:查找var所表示的字符串中,行首被PATTERN所匹配的字符串,將其替換爲SUBSTITUTE所表示的字符串。

    ${var/%PATTERN/SUBSTITUTE}:查找var所表示的字符串中,行尾被PATTERN所匹配的字符串,將其替換爲SUBSTITUTE所表示的字符串。

  查找刪除:

    ${var/PATTER}:將var中第一次被PATTERN匹配的字符串刪除。

    ${var//PATTER}:將var中全部被PATTERN匹配的字符串刪除。

    ${var/#PATTER}:將var中行首被PATTERN匹配的字符串刪除。

    ${var/%PATTER}:將var中行尾被PATTERN匹配的字符串刪除。

  大小寫轉換:

    ${var^^}:把var中全部小寫字符轉換成大寫。

    ${var,,}:把var中全部大寫字符轉換成小寫。

  變量賦值:

    ${var:-VALUE}:若是var變量爲空或未設置,那麼返回value;不然返回var變量的值

    ${var:=value}:若是var變量爲空或未設置,那麼返回value,並將VALUE賦值給變量var;不然返回var變量的值

    ${var:?ERROR_INFO}:若是var變量爲空或未設置,那麼返回ERROR_INFO;不然返回var變量的值

    ${var:+VALUE}:若是var變量不爲空,那麼返回value;

    

  

相關文章
相關標籤/搜索