本文是Linux Shell腳本系列教程的第(六)篇,更多shell教程請看:Linux Shell腳本系列教程
Shell在編程方面非常強大,其數組功能也非常的完善,繼上一篇之後,今天就為大家介紹下Shell數組的用法。
Shell支持一維數組(不支持多維數組),並且沒有限定數組的大小。
類似與C語言,數組元素的下標由0開始編號。獲取數組中的元素要利用下標,下標可以是整數或算術表達式,其值應大於或等於0。
一、Shell數組的定義
在Shell中,用括號來表示數組,數組元素之間用“空格”分割開。
定義數組的一般形式為:
array_name=(value1 … valuen)
例如:
array_name=(value0 value1 value2 value3)
array_name=(
value0
value1
value2
value3
)
而且還可以單獨定義數組的各個分量:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
可以不使用連續的下標,而且下標的范圍沒有限制。
二、Shell數組的賦值
直接通過 數組名[下標] 就可以對其進行引用賦值,如果下標不存在,自動添加新一個數組元素
使用示例:
[justcode@ikeepstudying ~]$ a[1]=100
[justcode@ikeepstudying ~]$ echo ${a[*]}
1 100 3 4 5
[justcode@ikeepstudying ~]$ a[5]=100
[justcode@ikeepstudying ~]$ echo ${a[*]}
1 100 3 4 5 100
三、Shell數組的讀取
讀取Shell數組元素值的一般格式是:
${array_name[index]}
valuen=${array_name[2]}
使用舉例:
#!/bin/sh
#justcode@ikeepstudying
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
運行腳本,輸出:
$./test.sh
First Index: Zara
Second Index: Qadir
使用@ 或 * 可以獲取數組中的所有元素,例如:
${array_name[*]}
${array_name[@]}
使用舉例:
#!/bin/sh
#justcode@ikeepstudying
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"
運行腳本,輸出:
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy
四、Shell數組的刪除
直接通過:unset 數組[下標] 可以清除相應的元素,不帶下標,清除整個數據。
使用示例
[justcode@ikeepstudying ~]$ a=(1 2 3 4 5)
[justcode@ikeepstudying ~]$ unset a
[justcode@ikeepstudying ~]$ echo ${a[*]}
[justcode@ikeepstudying ~]$ a=(1 2 3 4 5)
[justcode@ikeepstudying ~]$ unset a[1]
[justcode@ikeepstudying ~]$ echo ${a[*]}
1 3 4 5
[justcode@ikeepstudying ~]$ echo ${#a[*]}
4
五、Shell數組的其他常用操作
1)Shell數組長度
用${#數組名[@或*]} 可以得到數組長度,示例如下:
# 取得數組元素的個數
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得數組單個元素的長度
lengthn=${#array_name
}
2)Shell數組的分片
直接通過 ${數組名[@或*]:起始位置:長度} 切片原先數組,返回是字符串,中間用“空格”分開,因此如果加上”()”,將得到切片數組。
使用舉例
[justcode@ikeepstudying ~]$ a=(1 2 3 4 5)
[justcode@ikeepstudying ~]$ echo ${a[@]:0:3}
1 2 3
[justcode@ikeepstudying ~]$ echo ${a[@]:1:4}
2 3 4 5
[justcode@ikeepstudying ~]$ c=(${a[@]:1:4})
[justcode@ikeepstudying ~]$ echo ${#c[@]}
4
[justcode@ikeepstudying ~]$ echo ${c[*]}
2 3 4 5
3)Shell數組的替換
數組的替換方法是:${數組名[@或*]/查找字符/替換字符} 該操作不會改變原先數組內容,如果需要修改,可以看上面例子,重新定義數據。
使用舉例
[justcode@ikeepstudying ~]$ a=(1 2 3 4 5)
[justcode@ikeepstudying ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[justcode@ikeepstudying ~]$ echo ${a[@]}
1 2 3 4 5
[justcode@ikeepstudying ~]$ a=(${a[@]/3/100})
[justcode@ikeepstudying ~]$ echo ${a[@]}
1 2 100 4 5
好了,有關Shell數組的內容就纖維大家介紹到這裡,希望大家多多練習,熟練掌握。
更多shell教程請看:Linux Shell腳本系列教程
原文:Linux Shell系列教程之(六)Shell數組
本文轉自:Linux Shell腳本入門教程系列之(六)Shell數組