數組的基本應用

                               數組

變量:存儲單個元素的內存空間
v 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。
v 數組名和索引

索引:編號從0開始,屬于數值索引。

       元素數量為n-1
注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引, bash4.0版本之后開始支持。
bash的數組支持稀疏格式(索引不連續)
      
定義數組
v 聲明數組:
declare -a ARRAY_NAME  可以不用定義
declare -A ARRAY_NAME: 關聯數組    必須定義


v 數組元素的賦值:
(1) 一次只賦值一個元素;
ARRAY_NAME[INDEX]=VALUE

blob.png
(2) 一次賦值全部元素:
ARRAY_NAME=("VAL1" "VAL2" "VAL3" …)

blob.png
(3) 只賦值特定元素:
ARRAY_NAME=([0]="VAL1" [3]="VAL2" …)

blob.png

 

 

(4) 交互式數組值對賦值
read -a ARRAY
blob.png
引用數組
v 引用數組元素: ${ARRAY_NAME[INDEX]}
注意:省略[INDEX]表示引用下標為0的元素
v 數組的長度(數組中元素的個數)
${#ARRAY_NAME[*]} 或 ${#ARRAY_NAME[@]}

blob.png
數組數據處理
v 引用數組中的元素:
所有元素: ${ARRAY[@]}, ${ARRAY[*]}
數組切片: ${ARRAY[@]:offset:number}
offset: 要跳過的元素個數  number: 要取出的元素個數  

blob.png 

    

 

向數組中追加元素:    
ARRAY[${#ARRAY[*]}]    從最后一個索引開始追加   

blob.png
v 刪除數組中的某元素:導致稀疏格式
unset ARRAY[INDEX]

blob.png 

刪除了編號為[2]的數據,剩下的編號為【0】【1】【3】【4】【5
v 關聯數組:
declare -A ARRAY_NAME
ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘…)


字符串處理
v bash的字符串處理工具:
v 字符串切片:
${#var}:返回字符串變量var的長度

blob.png
${var:offset}:返回字符串變量var中從第offset個字符后(不包括第offset個字符)的字符開始,到最后的部分,offset的取值在0 ${#var}-1 之間(bash4.2后,充許為負值)

blob.png

 

 

 

 

${var:offset:number}:返回字符串變量var中從第offset個字符后(不包括第offset個字符)的字符開始,長度為number的部分

blob.png 

${var: -lengh}:取字符串的最右側幾個字符:
注意:冒號后必須有一空白字符

blob.png 

從右側開始,取3個字符
字符串處理
v 基于模式取子串:
${var#*word}:其中word可以是指定的任意字符
功能:刪除從左開始第一次匹配到的adm之前的內容,包括adm。

blob.png
${var##*word}

功能:刪除從左面開始最后一次匹配到的adm之前的內容,包括adm
blob.png
字符串處理
v ${var%word*}:其中word可以是指定的任意字符;
功能:刪除從右邊開始第一次匹配到的adm之后的內容,包括adm。

blob.png
v ${var%%word*}:刪除從右邊開始最后一次匹配到的adm之后的內容,包括adm。

blob.png
blob.png
字符串處理
v 查找替換:
${usb/adm/name}:將從左往右第一次匹配到的adm替換成name

blob.png 

${usb//adm/name}:將字符串中所有匹配到的adm替換成name

blob.png
${usb/#:/y}:將行首被匹配到的字符串 :替換成 y。

blob.png
${usb/%nologin/yes}:將行尾被nologin匹配到的字符替換成yes

blob.png
字符串處理
v 查找并刪除:
blob.png

v 字符大小寫轉換:
${usb^^}:把var中的所有小寫字母轉換為大寫
${usb,,}:把var中的所有大寫字母轉換為小寫
blob.png
變量賦值
v ${var:-value}:如果var為空或未設置,那么返回value;否則,則返回var的值
v ${var:+value}:如果var不空,則返回value
v ${var:=value}:如果var為空或未設置,那么返回value,并將value賦值給var;否則,則返回var的值

blob.png
v

原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/39353

(0)
zzdzzd
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • linux中nmcli命令使用及網絡配置

      Red Hat Enterprise Linux 7 與 CentOS 7 中默認的網絡服務由 NetworkManager 提供,這是動態控制及配置網絡的守護進程,它用于保持當前網絡設備及連接處于工作狀態,同時也支持傳統的 ifcfg 類型的配置文件。  NetworkManager 可以用于以下類型的連接:Ethernet,VLA…

    Linux干貨 2016-09-10
  • MySQL高可用架構之MHA

    MySQL高可用架構之MHA 1、關于MHA MHA(Master HA)是一款開源的MySQL的高可用程序,它為MySQL主從復制架構提供了automating master failover功能。MHA在監控到master節點故障時,會提升其中擁有的最新數據的slave節點成為新的master節點,在此期間,MHA會通過其它從節點獲取額外信息來避免一致性…

    Linux干貨 2017-03-30
  • 利用varnish構建httpd緩存服務器

    varnish如何存儲緩存對象:     file: 單個文件;不支持持久機制;     malloc: 緩存在內存中;     persistent:基于文件的持久存儲;(此方式不建議使用) vcl:配置緩存系統的緩存機制;【線程中緩存功…

    Linux干貨 2016-06-20
  • LVS負載均衡初接觸

    Linux Cluster : Cluster : 計算機集合, 為解決某個特定問題組合起來形成的單個系統; Linux Cluster 類型 : LB : Load Balancing, 負載均衡;()HA : High Avaiibality, 高可用;( 通過冗余的方式讓活動主機出現問題時取而代之, 并具有原主機一致的功能)HP : High Perf…

    Linux干貨 2016-10-28
  • 第十四周 N21 總有刁民想害朕

    系統的INPUT和OUTPUT默認策略為DROP; 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機;  iptables -A  INPUT -p tcp –dpor…

    Linux干貨 2016-10-17
  • shell編程之數組及環境變量

    數組 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的 集合 索引:編號從0 聲明數組: declare -a ARRAY_NAME declare -A ARRAY_NAME:關聯數組 1.declare  -a menu  menu[0]=beef  menu[1]=chicken menu…

    Linux干貨 2016-08-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 11:16

    文章對數組定義和調用等知識點整理的1很詳細,如果嫩能夠對于數組的實際應用實例有些詳細的介紹,就更好了哦

欧美性久久久久