Shell腳本數(shù)組操作小結(jié)
Linux Shell在編程方面比Windows批處理強(qiáng)大很多,無論是在循環(huán)、運(yùn)算。
bash支持一維數(shù)組(不支持多維數(shù)組),并且沒有限定數(shù)組的大小。類似與C語言,數(shù)組元素的下標(biāo)由0開始編號。獲取數(shù)組中的元素要利用下標(biāo),下標(biāo)可以是整數(shù)或算術(shù)表達(dá)式,其值應(yīng)大于或等于0。
定義數(shù)組
在Shell中,用括號來表示數(shù)組,數(shù)組元素用“空格”符號分割開。定義數(shù)組的一般形式為:
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
還可以單獨(dú)定義數(shù)組的各個(gè)分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
可以不使用連續(xù)的下標(biāo),而且下標(biāo)的范圍沒有限制。
讀取數(shù)組
讀取數(shù)組元素值的一般格式是:
${數(shù)組名[下標(biāo)]}
例如:
valuen=${array_name[n]}
使用@符號可以獲取數(shù)組中的所有元素,例如:
echo ${array_name[@]}
獲取數(shù)組的長度
獲取數(shù)組長度的方法與獲取字符串長度的方法相同,例如:
# 取得數(shù)組元素的個(gè)數(shù)
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得數(shù)組單個(gè)元素的長度
lengthn=${#array_name[n]}
附:shell數(shù)組小結(jié)
不知道 是什么時(shí)候?qū)懙臇|西,整理文檔時(shí)被考古發(fā)現(xiàn),給那些閑著蛋疼之人,一笑而過吧。如果本文中的錯(cuò)誤給您帶來所有的精神損失,請找保險(xiǎn)公司理陪!當(dāng)然你可以告訴我 (傾訴)
數(shù)組作為一種特殊的數(shù)據(jù)結(jié)構(gòu)在任何一種編程語言中都有它的一席之地,當(dāng)然bash shell也不例外。本文就shell數(shù)組來做一個(gè)小的總結(jié)。
在這里只討論一維數(shù)組的情況,關(guān)于多維數(shù)組(事實(shí)上,你得用一維數(shù)組的方法來模擬),不涉及。這里包括數(shù)組的復(fù)制,計(jì)算,刪除,替換。
數(shù)組的聲明:
declare -a array # array被當(dāng)作數(shù)組名
array=( value1 value2 value3 ... )
array=( [1]=one [2]=two [3]=three ... )
array="one two three" # echo ${array[0|@|*]},把a(bǔ)rray變量當(dāng)作數(shù)組來處理,但數(shù)組元素只有字符串本身
數(shù)組的訪問:
數(shù)組的刪除
unset array # 刪除整個(gè)數(shù)組
計(jì)算數(shù)組的長度:
${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的區(qū)別
數(shù)組的提取
從尾部開始提取:
${array[@]:1} # two three four,除掉第一個(gè)元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three
子串刪除
[root@localhost dev]# echo ${array[@]:0}
one two three four
[root@localhost dev]# echo ${array[@]#t*e} # 左邊開始最短的匹配:"t*e",這將匹配到"thre"
one two e four
[root@localhost dev]# echo ${array[@]##t*e} # 左邊開始最長的匹配,這將匹配到"three"
[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )
[root@localhost dev]# echo ${array[@] %o} # 從字符串的結(jié)尾開始最短的匹配
one tw three four
[root@localhost dev]# echo ${array[@] %%o} # 從字符串的結(jié)尾開始最長的匹配
one tw three four
子串替換
第一個(gè)匹配到的,會被刪除
mne twm three fmur
所有匹配到的,都會被刪除
mne twm three fmur
沒有指定替換子串,則刪除匹配到的子符
ne tw three fur
替換字符串前端子串
kne two three four
替換字符串后端子串
one twk three four
相關(guān)文章
Linux 中awk 提取包含某個(gè)關(guān)鍵字的段落
AWK是一種處理文本文件的語言,是一個(gè)強(qiáng)大的文本分析工具。這篇文章主要介紹了Linux 中awk 提取包含某個(gè)關(guān)鍵字的段落實(shí)例代碼,需要的朋友可以參考下2020-01-01一個(gè)shell for循環(huán)與case結(jié)合的腳本(監(jiān)控程序狀態(tài))
分享一個(gè)for循環(huán)+case的腳本(監(jiān)控程序狀態(tài)并執(zhí)行相關(guān)操作) ,供大家學(xué)習(xí)參考2013-11-11Bash技巧:把變量賦值為換行符(判斷文件是否以換行符結(jié)尾)
這篇文章主要介紹了Bash技巧:把變量賦值為換行符,判斷文件是否以換行符結(jié)尾,需要的朋友可以參考下2020-08-08Linux traceroute命令使用方法實(shí)例詳解
這篇文章主要介紹了Linux traceroute命令使用方法實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解應(yīng)用這部分內(nèi)容, 需要的朋友可以參考下2017-10-10bash腳本如何監(jiān)控cup/內(nèi)存/磁盤使用率
本文主要介紹了bash腳本如何監(jiān)控cup/內(nèi)存/磁盤使用率,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10