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 簡單多了 計算字串...