最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
盐池县| 嘉兴市| 宁安市| 莱州市| 万全县| 黄山市| 登封市| 峨边| 洱源县| 固阳县| 景东| 榆中县| 南部县| 韶山市| 金华市| 安国市| 江孜县| 桐梓县| 中牟县| 芷江| 高州市| 静安区| 庄浪县| 吉首市| 富锦市| 堆龙德庆县| 道孚县| 扬中市| 山丹县| 驻马店市| 金坛市| 瑞丽市| 双辽市| 阳东县| 泊头市| 齐河县| 康马县| 扶风县| 满洲里市| 鹤岗市| 涡阳县|