數組的基本應用

                               數組

變量:存儲單個元素的內存空間
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 10:12
下一篇 2016-08-24 10:12

相關推薦

  • 正則表達式及grep用法總結

    描述: grep: Global search REgular expression and Print outthe line. 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行; 模式:由正則表達式字符及文本字符所編寫的過濾條件 語法格式:grep [OPTIONS] PATTERN [FILE…] OPT…

    Linux干貨 2016-08-08
  • 壓縮解壓縮 tar 主要掌握

    compress [-dfvcVr] [-b maxbits] [file …] -d: 解壓縮,相當于 -c: 結果輸出至標準輸出,不刪除原文件 單純-c 會出亂碼 所以 > .. -v: 顯示詳情 ?uncompress解壓縮 ?zcat file.Z > file  ##沒人用  因為壓縮比不高  …

    Linux干貨 2016-08-21
  • 網絡管理

    常見的網絡物理組件:路由器、交換機、PC機 網絡的特性:速度、成本、安全性、可用性、可擴展性、可靠性、拓撲 拓撲結構:           物理拓撲:總線拓撲               &…

    Linux干貨 2017-05-09
  • 馬哥Linux第五周作業

    at,cron,rpm,yum,sed

    2018-01-12
  • 分布式文件系統之fastDFS部署

    fastDFS下載地址:https://github.com/happyfish100/fastdfs部署參考文檔:http://joelhy.github.io/2015/01/27/FastDFS-v5-06-deploy/ 我們接下來來部署fastDFS 部署結構: 192.168.42.150 node1 [Tracker]192.168.42.15…

    Linux干貨 2017-06-16
  • lvm邏輯卷管理

    #LVM 邏輯卷管理 一、創建pv        創建pv可以在物理硬盤(裸盤上創建),MBR類型的分區(要更改分區類型為linux lvm: 8e )。GPT分區也要更改分區類型為8e00 Linux LVM 。    還可以在RAID上創建。注意要在沒有數據的分區上…

    Linux干貨 2016-09-02

評論列表(1條)

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

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

欧美性久久久久