一.陣列
陣列簡介
變數:用乙個固定的字串,代替乙個不固定字串。
陣列:用乙個固定的字串,代替多個不固定字串。
型別普通陣列:只能使用整數作為陣列索引
關聯陣列:可以使用字串作為陣列索引
圖示
變數切片有個索引的概念。乙個索引(整數)對應乙個字元。
普通陣列:中的索引對應乙個字串。
關聯陣列:陣列中的索引可以使用字串。
1.普通陣列
定義陣列:方法一: 一次賦乙個值,陣列名[下標]=變數值
#array3=(cat /etc/passwd
) 希望是將該檔案中的每乙個行作為乙個元數賦值給陣列array3
#array4=(ls /var/ftp/shell/for*
)
#array5=(tom jack alice 「bash shell」)
colors=($red $blue $green $recolor)
#array6=(1 2 3 4 5 6 7 「linux shell」 [20]=saltstack)
訪問陣列元素:
元素包括索引和索引值
#echo $ 訪問陣列中的第乙個元數
# echo $ 訪問陣列中所有元數 等同於 echo $
# echo $ 統計陣列元素的個數
# echo $ 獲取陣列元素的索引
# echo $ 從陣列下標1開始
# echo $ 從陣列下標1開始,訪問兩個元素
2.關聯陣列
定義關聯陣列:切記:先宣告關聯陣列
方法一: 一次賦乙個值,陣列名[索引]=變數值
修改某個值 [root@localhost-111 ~]# unset lol [root@localhost-111 ~]# declare -a lol [root@localhost-111 ~]# lol[down1]=aaa [root@localhost-111 ~]# lol[down2]=bbb [root@localhost-111 ~]# lol[down3]=ccc [root@localhost-111 ~]# echo $ aaa bbb ccc [root@localhost-111 ~]# lol[down2]=ddd [root@localhost-111 ~]# echo $ aaa ddd ccc
方法二: 一次賦多個值
# declare -a ass_array2
# ass_array2=([index1]=tom [index2]=jack [index3]=alice [index4]='bash shell')
檢視陣列:declare -a
訪問陣列元素:
# echo $ 訪問陣列中的第二個元數
# echo $ 訪問陣列中所有元數 等同於 echo $
# echo $ 獲得陣列元數的個數
# echo $ 獲得陣列元數的索引
陣列和迴圈
1:通過迴圈定義和顯示陣列
2:通過陣列統計資料
案例:
案例1:while指令碼快速定義陣列
定義陣列
#!/bin/bash
#迴圈讀取檔案,定義陣列
while read line
do#hosts:陣列名
#[++i]:索引遞增,++i是1開始,i++是0開始。
#$line:值,即檔案中的內容
hosts[
++i]=$line
done < /etc/hosts
#輸出索引每一行
for i in $
doecho
"$i : $"
done
測試陣列
[root@localhost ~]
# bash array1.sh
「陣列hosts first:127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4」
1 : 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 : ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
案例2:for指令碼快速定義陣列
定義陣列
[root@localhost ~]
# vim for_array.sh
#!/bin/bash
#2020
#for array
for line in `cat
/etc/hosts`
do hosts[
++i]=$line
done
for i in $
doecho
"$i: $"
done
測試陣列
[root@localhost ~]
# bash for_array.sh
1: 127.0.0.1
2: localhost
3: localhost.localdomain
4: localhost4
5: localhost4.localdomain4
6: ::1
7: localhost
8: localhost.localdomain
9: localhost6
10: localhost6.localdomain6
區別 for的空格分割
解決方法
如何解決for的空格分割的問題。使用ifs=$』\n』 重新定義分隔符。
另外,如果指令碼中還有for怎麼辦呢?儲存變數,還原變數
解決示例
1 定義性別檔案
shell程式設計 陣列
1 定義陣列 通過指定元素值來定義陣列 array key value eg.array 1 one array 3 three shell中的陣列的下標 索引 從0開始 也可以通過declare語句定義陣列 declare a array 沒必要,在shell中,所有的變數都不必顯式定義就可以用作...
Shell程式設計 陣列
1.4 求陣列最大值 1.5 示例 1.6 陣列的操作 1.7 shell指令碼除錯 1.3.1 陣列包括的資料型別 陣列只可存放數值或字元 1.3.2 陣列操作第一種方法每個元素和他後面的元素挨個比 大的放後面 root shell shuzu vimshuzu paixu.sh bin bash...
shell 程式設計 2 陣列
陣列 只支援一維,不限定大小。下標由0開始,可以是整數或算數表示式,大於或等於0。1.定義陣列 arr name val0,val1,valn arr name val00 val11 arr name n valuen 下標可以不連續。root k8s master test0 arr name ...