shell 陣列詳細用法

2022-03-15 12:43:09 字數 4047 閱讀 7408

一 陣列介紹

1.什麼是陣列

陣列就是一系列元素的集合,乙個陣列內可以存放多個元素
2.為何要用陣列?
我們可以用陣列將多個元素彙總到一起,避免單獨定義的麻煩
二 陣列的使用

1.陣列的定義

# 方式一:array=(元素1 元素2 元素3) 

array=(egon 18 male)

# 方式二:

array=([key1]=value1 [key2]=value2 [key3]=value3) array=([0]=111 [1]="two" [2]=333)

# 方式三:依次賦值

array_new[0]=111

3array_new[1]=222

array_new[2]="third"

# 方式四:利用執行命令的結果設定陣列元素:array=($(命令))

或者 array=(`命令`) 該方式會將命令的結果以空格為分隔符切成多個元素然後賦值給陣列

[root@aliyun ~]# ls /test a.txt b.txt

[root@aliyun ~]# array3=(`ls /test`)

[root@aliyun ~]# declare -a |grep array3

declare -a array3='([0]="a.txt" [1]="b.txt")'

# ps:檢視宣告過的陣列 declare -a

1.2 訪問陣列內元素
[root@aliyun ~]# array=(egon 18 male) 

# 1、按照索引訪問陣列內指定位置的元素

[root@aliyun ~]# echo $

egon [root@aliyun ~]# echo $

18[root@aliyun ~]# echo $

male

[root@aliyun ~]# echo $ # 支援負向索引

male

# 2、訪問陣列內全部元素資訊

[root@aliyun ~]# echo $

egon 18 male

[root@aliyun ~]# echo $

egon 18 male

# 3、獲取陣列元素的長度

[root@aliyun ~]# echo $

3[root@aliyun ~]# echo $

3

1.3 修改/新增陣列元素
[root@aliyun ~]# array=(egon 18 male) 

[root@aliyun ~]# array[0]="egon" # 修改

[root@aliyun ~]# array[3]="it" # 新增

[root@aliyun ~]# declare -a |grep array

declare -a array='([0]="egon" [1]="18" [2]="male" [3]="it")'

1.4 刪除陣列元素
[root@aliyun ~]# unset array[0] 

[root@aliyun ~]# echo $

18 male it

[root@aliyun ~]# declare -a |grep array

declare -a array='([1]="18" [2]="male" [3]="it")'

[root@aliyun ~]# unset array[2]

[root@aliyun ~]# declare -a |grep array

declare -a array='([1]="18" [3]="it")'

[root@aliyun ~]# unset array # 刪除整個陣列

[root@aliyun ~]# echo $

[root@aliyun ~]#

1.5陣列內元素的擷取
[root@aliyun ~]# array=(egon 18 male it 1.80) 

[root@aliyun ~]# echo $ # 從索引1開始,一直到最後

18 male it 1.80

[root@aliyun ~]# echo $ # 從索引1開始,訪問3個元素

18 male it

[root@aliyun ~]# array=(one two three four five fire)

[root@aliyun ~]# echo $

two three four five fire

[root@aliyun ~]# echo $

one two three four

1.66 陣列內容的替換
[root@aliyun ~]# array=(one two three four five fire) 

[root@aliyun ~]# echo $

one two three four abc fire

[root@aliyun ~]# echo $

one two three four abc abc

三 關聯陣列
陣列分為兩種

普通陣列:只能使用整數作為陣列索引,我們前面介紹的都是普通陣列

關聯陣列:可以使用字串作為陣列索引,需要用declare -a宣告

宣告關聯陣列

[root@aliyun ~]# declare -a info

[root@aliyun ~]# info["name"]="egon"

[root@aliyun ~]# info["age"]=18

[root@aliyun ~]# info["gender"]="male"

[root@aliyun ~]#

[root@aliyun ~]# declare -a |grep info

declare -a info='([gender]="male" [name]="egon" [age]="18" )'

[root@aliyun ~]#

[root@aliyun ~]# echo $

male egon 18

[root@aliyun ~]#

[root@aliyun ~]# echo $

egon

四 遍歷陣列
方法一: 利用獲取所有資訊進行遍歷 (適用於普通陣列與關聯陣列)

# 例1

declare -a array

array=(["name"]="egon" ["age"]=18 ["gender"]="male")

for item in $

do echo $item

done

# 例2

array=("egon" 18 "male")

for item in $

do echo $item

done

方法二: 通過陣列元數的索引進行遍歷(適用於普通陣列與關聯陣列)

# 例1

declare -a array

array=(["name"]="egon" ["age"]=18 ["gender"]="male")

for i in $ # echo $ # 獲取的是key資訊:name age gender

do echo "$i:$"

done

# 例2

array=("egon" 18 "male")

for i in $ # echo $ 直接獲取所有元素的索引資訊

do echo $i echo $

done

方法三:根據陣列長度資訊進行遍歷,(適用於普通陣列)

array=("egon" 18 "male")

for ((i=0;i<$;i++))

do echo "$i:$"

done

shell陣列用法

declare a arr 宣告乙個陣列變數 arr 0 0 arr 1 1 declare a name mike jim declare宣告 name tom jim 也可以直接建立陣列 b 1 23 小括號空格法 c 1 2 3 引號空格法 d 0 1 d 1 2 直接賦值echo 列印乙個元...

Swift陣列詳細用法解析

一 說明 swift陣列中的型別必須一致,這一點與oc不同 陣列初始化 var numbers 0,1,2,3,4,5 var vowels a e i o u 陣列的型別 int 或者 array var numbers int 0,1,2,3,4,5 var numbers array 0,1,...

Shell指令碼(詳細)

定義乙個變數例子 name xintiaobao number 100注意 1,變數名和等號之間不能有空格 2,首個字元必須為字母 a z,a z 3,中間不能有空格,可以使用下劃線 4,不能使用標點符號。5,不能使用bash裡的關鍵字 使用變數 只需要在乙個定義過的變數前面加上美元符號 就可以了,...