陣列和變數的區別:變數在記憶體中占用的空間是離散的,陣列在內粗中開闢一段連續的大記憶體空間,隨後陣列中的每個元素都放入陣列記憶體中。陣列元素使用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...