歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux Shell腳本入門教程系列之(六)Shell數組

本文是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數組
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Copyright © Linux教程網 All Rights Reserved