linux—shell編程之數組和字串處理工具

來源:互聯網
上載者:User

標籤:取子串   指定   bash   開頭   連續   記憶體   屬性   length   大小   

數組:存放多個元素的連續記憶體空間。

  聲明數組:bash-4以後支援除預設的0,1,2……還可以自訂索引格式,此類數組稱之為“關聯陣列”  

    聲明索引數組:declare -a NAME

    聲明關聯陣列:declare -A NAME

  索引數組賦值:

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

           ARRAY_NAME=("value1"  "value2" ……)

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

    互動式賦值:read -a  ARRAY_NAME

  關聯陣列賦值

    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;

    

  

 

  

 

  

linux—shell編程之數組和字串處理工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.