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