shell中陣列的使用

2021-08-29 02:45:22 字數 2817 閱讀 6916

1.1 declare定義

使用declare -a 命令定義陣列(陣列的索引是從0開始計數的),接下來就可以通過操作符為不同索引位置的元素賦值。

declare -a names

names[0]=tom

names[1]=jack

注意:shell變數是弱型別的,不要求陣列中元素型別相同

在定義陣列的同時,可以同時賦值,用()表示,各元素之間用空格隔開

#定義的同時直接賦值

declare -a names=(tom jack)

#增加元素

names[2]=sue

1.2直接定義

建立陣列最簡單的方法是使用()直接定義陣列,括號中元素用空格隔開;在括號中也可以宣告下標。例項:

#使用()直接陣列

days1=(one two three four five)

#或者在()中宣告下標,預設從0開始

days2=([0]=』one』 [1]=』two』 [2]=』three』 [3]=』four』)

#下標可以不連續

days3=([0]=』one』 [2]=』three』)

1.3帶下標定義

使用操作符,為每乙個指定下標賦值,下標也可以不連續

header[0]=』user』

header[1]=』pid』

header[2]=』%cpu』

header[3]=』%mem』

1.4從檔案讀取陣列

days=(`cat days.txt`)
2.1賦值

指定下標,使用操作符為元素賦值,當下標不存在時,相當於為陣列增加元素

declare -a names

names[0]=tom

2.2取值

指定下標,使用操作符從陣列中對應元素,然後使用取值,

格式:取值,格式:

取值,格式:

days=(one two three four five)

#取出第1個元素

echo $

#取出第3個元素

echo $

獲得陣列中所有值:$、$

$得到是以空格隔開的元素,可以用在陣列遍歷中;$得到的是一整個字串。

注意:$並不會獲得所有值,它只會獲得到第乙個元素的值。即陣列名

等價於等價於

陣列名等價於

2.3長度

利用」@」或「*」字元,將陣列擴充套件成列表,然後使用」#」來獲取陣列元素的個數。

示例:

#!/bin/bash

#陣列個數

days=(one two three four)

echo "陣列days的元素個數為:$"

echo "**********"

names=()

names[1]=tom

names[2]=jack

echo "陣列names的元素個數為:$"

結果:

注意:如果某個元素是字串,可以通過制定索引的方式獲得該元素的長度。

2.4遍歷

存在以下三種方式:

(1)$、$均可以獲得所有元素(不管是元素列表,還是一整個字串),使用for迴圈遍歷即可

(2)帶陣列下標的遍歷,當需要使用到陣列的下標時,可以使用$

(3)while迴圈:根據元素的個數遍歷,但對於稀疏陣列,可能會丟失資料

示例:

#!/bin/bash

#陣列遍歷

days=(one two three four)

#for迴圈遍歷

for day in $ #或$

do echo $day

done

echo "***************"

#fou迴圈帶下標遍歷

for i in $

do echo $

done

echo "***************"

#while迴圈

names=() #陣列names是乙個稀疏陣列

names[1]=tom

names[2]=jack

i=0while [ $i -lt $ ]

do echo $

let i++

done

結果:

2.5刪除

刪除乙個陣列或陣列中元素用unset命令。

unset 陣列名[索引] #刪除索引下的元素

unset 陣列名 #刪除整個陣列

2.6連線

用()將多個陣列連線在一起,()中各個陣列用空格隔開。

days=(one two three four)

names=(tom jack)

days=($ $)

2.7分片

days=(one two three four)

echo $

使用@將陣列轉換成列表後再進行分片,分片結果包含起始下標與結束下標的元素

shell中的陣列使用方法

arr 123 34 3 5 echo arr 預設獲取第乙個元素 123 echo 通過下標訪問 34 echo 訪問整個陣列 或者 獲取整個陣列 123 34 3 5 echo 獲取陣列的長度 最大下標 獲取長度 陣列中是最後乙個下標 3 echo 獲取字串長度 1 echo 切片方式獲取一部分...

Linux下Shell中陣列的使用

定義 可以整體定義陣列 array name value0 value1 value2 value3 或者 array name value0 value1 value2 value3 此時陣列的下標預設是從0開始的 還可以單獨定義陣列的各個分量 array name 0 value0 array ...

Shell中的陣列

一 陣列和字串 array 3 a b c echo array 1 輸出b,str a b c array str echo array 1 同樣輸出b,要注意 array str 中的右值的括號不能缺 上面這個就是我們常說的把字串放到乙個陣列中,也可以理解為動態陣列,比c和c 簡單多了 計算字串...