標籤:取子串 指定 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編程之數組和字串處理工具