shell程式設計陣列

2021-10-24 10:45:16 字數 3731 閱讀 3281

一.陣列

陣列簡介

變數:用乙個固定的字串,代替乙個不固定字串。

陣列:用乙個固定的字串,代替多個不固定字串。

型別普通陣列:只能使用整數作為陣列索引

關聯陣列:可以使用字串作為陣列索引

圖示

變數切片有個索引的概念。乙個索引(整數)對應乙個字元。

普通陣列:中的索引對應乙個字串。

關聯陣列:陣列中的索引可以使用字串。

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 ...