shell指令碼高階之陣列基礎

2021-09-27 04:55:34 字數 3032 閱讀 6811

​ 陣列和變數的區別:變數在記憶體中占用的空間是離散的,陣列在內粗中開闢一段連續的大記憶體空間,隨後陣列中的每個元素都放入陣列記憶體中。陣列元素使用index標識。

​ bash裡有兩種陣列普通陣列和關聯陣列。普通陣列只能使用整數類形數值作為陣列索引,關聯陣列可以使用字串作為索引。關聯陣列的另外三種稱呼:字典(dict),hash結構和對映(map),是一種key和value一一對應的關係。

1.1定義普通陣列

方法一:

[root@linux1 ~]# age=(18 22 36 28)

[root@linux1 ~]# echo $

28

方法二:自定義索引位

[root@linux1 ~]# age[5]=15

[root@linux1 ~]# age[6]=76

1.2列印陣列所有值

[root@linux1 ~]# echo $

18 22 36 28 15 76

[root@linux1 ~]# echo $

18 22 36 28 15 76

1.3檢視陣列索引號

[root@linux1 ~]# echo $

0 1 2 3 5 6

1.4統計陣列中元素的個數(只統計值不為空的元素)

[root@linux1 ~]# echo $

6[root@linux1 ~]# echo $

6

1.5統計陣列下標為1的變數的長度

[root@linux1 ~]# echo $

2

2.1宣告關聯陣列

[root@linux1 ~]# declare -a array_dep
2.2陣列賦值

[root@linux1 ~]# array_dep=([name1]=zhaosi [name2]=zhangsan)
分開賦值

[root@linux1 ~]# array_dep[name3]=wangwu

[root@linux1 ~]# array_dep[name4]=wangba

2.3檢視陣列所有值

[root@linux1 ~]# echo $

wangwu zhangsan zhaosi wangba

[root@linux1 ~]# echo $

wangwu zhangsan zhaosi wangba

2.3檢視陣列索引號

[root@linux1 ~]# echo $

name3 name2 name1 name4

[root@linux1 ~]# echo $

name3 name2 name1 name4

2.4統計陣列長度

[root@linux1 ~]# echo $

4[root@linux1 ~]# echo $

4

和變數的擷取和替換是類似的

[root@linux1 ~]# age=(12 15 34 23 56 21)

[root@linux1 ~]# age0=$ #從陣列全部元素中第2個元素向後擷取2個元素出來(即34 23)

[root@linux1 ~]# echo $

34 23

[root@linux1 ~]# age1=$ #將陣列中的15替換成51

[root@linux1 ~]# echo $

12 51 34 23 56 21

從左匹配刪除和從又匹配刪除

[root@linux1 ~]# array=(one two three foue five)

[root@linux1 ~]# array1=$ #o前面的都刪了,只留o右邊(最短匹配)

[root@linux1 ~]# array2=$ #o前面的都刪了,只留o右邊(最長匹配)

[root@linux1 ~]# array3=$ #o後面的都刪了,只留o前面(最短匹配)

[root@linux1 ~]# array4=$ #o後面的都刪了,只留o前面(最長匹配)

[root@linux1 ~]# echo $

ne three ue five

[root@linux1 ~]# echo $

ne three ue five

[root@linux1 ~]# echo $

one tw three foue five

[root@linux1 ~]# echo $

one tw three foue five

第一種寫法:

for i in $;do  

echo $i

done

第二種寫法:

for i in $;do

echo $

done

第三種寫法:c語言風格

for ((i=0;i<$;i++));do    # 以陣列變數個數的方式遍歷陣列

echo $

done

Shell指令碼之陣列

陣列是存放相同型別資料的集合,陣列中可以存放多個值,經常配合迴圈語句進行使用。例如 有乙個陣列 num 15 16 17 18 19 陣列名稱 num 陣列元素 第1個 11 陣列長度 5 陣列下標 元素18所對應的下標為3shell 陣列用括號來表示,元素用 空格 符號分割開,語法格式如下 方法一...

shell指令碼之陣列

陣列中可以存放多個值。bash shell只支援一維陣列,初始化時不需要定義陣列大小。與大部分程式語言類似,陣列元素的下標由0開始。shell陣列用括號來表示,元素用 符號來分割開,語法格式如下 array name n1 n2 n3 ns 例項 array name a b c d 我們也可以使用...

Shell指令碼程式設計基礎之shell指令碼退出狀態碼

exit 在指令碼中本身是退出的作用 根據程式執行的結果,返回對應的狀態碼,幫助實現條件判斷 21 15 48 root c8 3 55 grep q root etc passwd echo grep q admin etc passwd echo grep q root abc echo gre...