數組
變量:存儲單個元素的內存空間
v 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。
v 數組名和索引
索引:編號從0開始,屬于數值索引。
元素數量為n-1個
注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引, bash4.0版本之后開始支持。
bash的數組支持稀疏格式(索引不連續)
定義數組
v 聲明數組:
declare -a ARRAY_NAME 可以不用定義
declare -A ARRAY_NAME: 關聯數組 必須定義
v 數組元素的賦值:
(1) 一次只賦值一個元素;
ARRAY_NAME[INDEX]=VALUE
(2) 一次賦值全部元素:
ARRAY_NAME=("VAL1" "VAL2" "VAL3" …)
(3) 只賦值特定元素:
ARRAY_NAME=([0]="VAL1" [3]="VAL2" …)
(4) 交互式數組值對賦值
read -a ARRAY
引用數組
v 引用數組元素: ${ARRAY_NAME[INDEX]}
注意:省略[INDEX]表示引用下標為0的元素
v 數組的長度(數組中元素的個數):
${#ARRAY_NAME[*]} 或 ${#ARRAY_NAME[@]}
數組數據處理
v 引用數組中的元素:
所有元素: ${ARRAY[@]}, ${ARRAY[*]}
數組切片: ${ARRAY[@]:offset:number}
offset: 要跳過的元素個數 number: 要取出的元素個數
向數組中追加元素:
ARRAY[${#ARRAY[*]}] 從最后一個索引開始追加
v 刪除數組中的某元素:導致稀疏格式
unset ARRAY[INDEX]
刪除了編號為[2]的數據,剩下的編號為【0】【1】【3】【4】【5】
v 關聯數組:
declare -A ARRAY_NAME
ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘…)
字符串處理
v bash的字符串處理工具:
v 字符串切片:
${#var}:返回字符串變量var的長度
${var:offset}:返回字符串變量var中從第offset個字符后(不包括第offset個字符)的字符開始,到最后的部分,offset的取值在0 到 ${#var}-1 之間(bash4.2后,充許為負值)
${var:offset:number}:返回字符串變量var中從第offset個字符后(不包括第offset個字符)的字符開始,長度為number的部分
${var: -lengh}:取字符串的最右側幾個字符:
注意:冒號后必須有一空白字符
從右側開始,取3個字符
字符串處理
v 基于模式取子串:
${var#*word}:其中word可以是指定的任意字符
功能:刪除從左開始第一次匹配到的adm之前的內容,包括adm。
${var##*word}:
功能:刪除從左面開始最后一次匹配到的adm之前的內容,包括adm。
字符串處理
v ${var%word*}:其中word可以是指定的任意字符;
功能:刪除從右邊開始第一次匹配到的adm之后的內容,包括adm。
v ${var%%word*}:刪除從右邊開始最后一次匹配到的adm之后的內容,包括adm。
字符串處理
v 查找替換:
${usb/adm/name}:將從左往右第一次匹配到的adm替換成name
${usb//adm/name}:將字符串中所有匹配到的adm替換成name
${usb/#:/y}:將行首被匹配到的字符串 :替換成 y。
${usb/%nologin/yes}:將行尾被nologin匹配到的字符替換成yes。
字符串處理
v 查找并刪除:
v 字符大小寫轉換:
${usb^^}:把var中的所有小寫字母轉換為大寫
${usb,,}:把var中的所有大寫字母轉換為小寫
變量賦值
v ${var:-value}:如果var為空或未設置,那么返回value;否則,則返回var的值
v ${var:+value}:如果var不空,則返回value
v ${var:=value}:如果var為空或未設置,那么返回value,并將value賦值給var;否則,則返回var的值
v
原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/39353
文章對數組定義和調用等知識點整理的1很詳細,如果嫩能夠對于數組的實際應用實例有些詳細的介紹,就更好了哦