五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

簡(jiǎn)單高效的Shell數(shù)組操作技巧與技術(shù)

2023-04-17 22:54 作者:小毛驢的爛筆頭  | 我要投稿

Shell Array

數(shù)組是Shell腳本中一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)一組數(shù)據(jù)。在Shell中,我們可以使用各種技巧來(lái)操作數(shù)組,包括數(shù)組的取值、移除數(shù)組中匹配的字符以及判斷一個(gè)值是否在數(shù)組中。下面是一些常用的Shell數(shù)組操作技巧。

數(shù)組的初始化

使用空格分隔的元素初始化數(shù)組:

#?創(chuàng)建一個(gè)名為arrayZ的數(shù)組,其中包含了6個(gè)元素。
arrayZ=(?one?two?three?four?five?five?)

使用冒號(hào)分隔的元素,并使用字符串替換進(jìn)行數(shù)組初始化:

str="a:b:c:d:e"
set?-f?#?避免通配符擴(kuò)展(*的擴(kuò)展)
arr=(${str//:/?})?
#?現(xiàn)在數(shù)組arr包含了值?'a',?'b',?'c',?'d',?'e'

使用'tr'命令將冒號(hào)替換為換行符進(jìn)行數(shù)組初始化

str="a:b:c:d:e"
arr=($(echo?$str?|?tr?':'?"\n"))
#?現(xiàn)在數(shù)組arr包含了值?'a',?'b',?'c',?'d',?'e'

使用'sed'命令將冒號(hào)替換為換行符進(jìn)行數(shù)組初始化:

str="a:b:c:d:e"
arr=($(echo?$str?|?sed?'s/:/\n/g'))
#?現(xiàn)在數(shù)組arr包含了值?'a',?'b',?'c',?'d',?'e'

使用'IFS'(內(nèi)部字段分隔符)和'eval'命令進(jìn)行數(shù)組初始化:

str="a:b:c:d:e"
IFS=':'?eval?'arr=($str)'
#?現(xiàn)在數(shù)組arr包含了值?'a',?'b',?'c',?'d',?'e'

數(shù)組的訪問(wèn)

比如有如下一個(gè)數(shù)組: arrayZ=(one two three four five five)

使用${array[@]}或${array[*]}可以獲取數(shù)組中的所有元素。

#?獲取所有元素
echo?${arrayZ[@]}???#?輸出:?one?two?three?four?five?five
echo?${arrayZ[*]}???#?輸出:?one?two?three?four?five?five

使用${array[@]:1}可以獲取數(shù)組中從第二個(gè)元素開(kāi)始的所有元素。

echo?${arrayZ[@]:1}?//two?three?four?five?

使用${array[@]:2:3}可以獲取數(shù)組中從第三個(gè)元素開(kāi)始的三個(gè)元素。

#?獲取從第三個(gè)元素開(kāi)始的三個(gè)元素
echo?${arrayZ[@]:2:3}???#?輸出:?three?four?five

使用${#array[*]}或${#array[@]}可以獲取數(shù)組中元素的個(gè)數(shù)。

#?獲取數(shù)組中元素的個(gè)數(shù)
echo?${#arrayZ[*]}???#?輸出:?6
echo?${#arrayZ[@]}???#?輸出:?6

使用${#array[0]}可以獲取數(shù)組中第一個(gè)元素的長(zhǎng)度。

#?獲取第一個(gè)元素的長(zhǎng)度
echo?${#arrayZ[0]}???#?輸出:?3

數(shù)組的操作

使用#和##、%和%%操作符來(lái)移除數(shù)組中匹配的字符

#?最短匹配和最長(zhǎng)匹配
echo?${arrayZ[@]#f*r}??#?移除匹配"four"
echo?${arrayZ[@]##t*e}?#?最長(zhǎng)匹配,移除匹配"three"

echo?${arrayZ[@]%h*e}??#?移除匹配"four"
echo?${arrayZ[@]%%t*e}?#?最長(zhǎng)匹配,移除匹配"three"

判斷一個(gè)值是否在數(shù)組中

使用 grep 命令

arrayZ=(?one?two?three?four?five?five?)

#?判斷值是否在數(shù)組中
echo?${arrayZ[@]:0}?|?grep?-o?'\bone\b'?>?/dev/null
if?[?$??-eq?0?];?then
????echo?"值在數(shù)組中"
else
????echo?"值不在數(shù)組中"
fi

上面的示例中,${arrayZ[@]:0} 用于將數(shù)組展開(kāi)為一個(gè)字符串,然后使用 grep 命令匹配值,并通過(guò) -o 參數(shù)只輸出匹配到的值。如果值在數(shù)組中,grep 命令會(huì)返回 0,否則返回非零值。通過(guò)判斷 $? 的值,可以確定值是否在數(shù)組中。

使用自定義函數(shù)

containsElement?()?{
????local?e
????for?e?in?"${@:2}";?do
????????[[?"$e"?==?"$1"?]]?&&?return?0
????done
????return?1
}

#?判斷值是否在數(shù)組中
arrayZ=(?one?two?three?four?five?five?)
containsElement?"onxxx"?"${arrayZ[@]}"
if?[?$??-eq?0?];?then
????echo?"值在數(shù)組中"
else
????echo?"值不在數(shù)組中"
fi

上面的示例中,containsElement 函數(shù)接受兩個(gè)參數(shù),第一個(gè)參數(shù)是要判斷的值,第二個(gè)參數(shù)是數(shù)組。函數(shù)通過(guò)遍歷數(shù)組中的每個(gè)元素,比較是否與要判斷的值相等,如果相等則返回 0,表示值在數(shù)組中;否則返回非零值,表示值不在數(shù)組中。


簡(jiǎn)單高效的Shell數(shù)組操作技巧與技術(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
灵寿县| 湘阴县| 泗洪县| 乐东| 罗田县| 金坛市| 新竹市| 乌拉特中旗| 五峰| 霍州市| 库车县| 微山县| 山东| 内江市| 桐柏县| 黑水县| 金沙县| 定兴县| 和硕县| 普安县| 曲水县| 永泰县| 瑞丽市| 巫山县| 福州市| 平顶山市| 临沂市| 天峨县| 平果县| 长海县| 库尔勒市| 东至县| 神农架林区| 临漳县| 新乡县| 佳木斯市| 富源县| 中方县| 朝阳区| 长垣县| 竹溪县|