摘要:Shell支持一維數(shù)組(不支持多維數(shù)組),并且沒有限定數(shù)組的大小。類似與C語言,數(shù)組元素的下標(biāo)由0開始編號。獲取數(shù)組中的元素要利用下標(biāo),下標(biāo)可以是整數(shù)或算術(shù)表達式,其值應(yīng)大于或等于0。一、Shell數(shù)組的定義在Shell中,用括號來表示數(shù)組,數(shù)組元素之間用“空格”分割開。定義數(shù)組的一般形式為:array_name=(value1 … valuen)例如:array_name=(value0&nbs
Shell支持一維數(shù)組(不支持多維數(shù)組),并且沒有限定數(shù)組的大小。
類似與C語言,數(shù)組元素的下標(biāo)由0開始編號。獲取數(shù)組中的元素要利用下標(biāo),下標(biāo)可以是整數(shù)或算術(shù)表達式,其值應(yīng)大于或等于0。
一、Shell數(shù)組的定義
在Shell中,用括號來表示數(shù)組,數(shù)組元素之間用“空格”分割開。
定義數(shù)組的一般形式為:
array_name=(value1 … valuen)
例如:
array_name=(value0 value1 value2 value3) array_name=( value0 value1 value2 value3 )
而且還可以單獨定義數(shù)組的各個分量:
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
可以不使用連續(xù)的下標(biāo),而且下標(biāo)的范圍沒有限制。
二、Shell數(shù)組的賦值
直接通過 數(shù)組名[下標(biāo)] 就可以對其進行引用賦值,如果下標(biāo)不存在,自動添加新一個數(shù)組元素
使用示例:
[linuxdaxue@centos5 ~]$ a[1]=100 [linuxdaxue@centos5 ~]$ echo ${a[*]} 1 100 3 4 5 [linuxdaxue@centos5 ~]$ a[5]=100 [linuxdaxue@centos5 ~]$ echo ${a[*]} 1 100 3 4 5 100
三、Shell數(shù)組的讀取
讀取Shell數(shù)組元素值的一般格式是:
${array_name[index]} valuen=${array_name[2]}
使用舉例:
#!/bin/sh #www.linuxdaxue.com 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
使用@ 或 * 可以獲取數(shù)組中的所有元素,例如:
${array_name[*]}
${array_name[@]}
使用舉例:
#!/bin/sh #www.linuxdaxue.com 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數(shù)組的刪除
直接通過:unset 數(shù)組[下標(biāo)] 可以清除相應(yīng)的元素,不帶下標(biāo),清除整個數(shù)據(jù)。
使用示例
[linuxdaxue@centos5 ~]$ a=(1 2 3 4 5) [linuxdaxue@centos5 ~]$ unset a [linuxdaxue@centos5 ~]$ echo ${a[*]} [linuxdaxue@centos5 ~]$ a=(1 2 3 4 5) [linuxdaxue@centos5 ~]$ unset a[1] [linuxdaxue@centos5 ~]$ echo ${a[*]} 1 3 4 5 [linuxdaxue@centos5 ~]$ echo ${#a[*]} 4
復(fù)制代碼
五、Shell數(shù)組的其他常用操作
1)Shell數(shù)組長度
用${#數(shù)組名[@或*]} 可以得到數(shù)組長度,示例如下: # 取得數(shù)組元素的個數(shù) length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數(shù)組單個元素的長度 lengthn=${#array_name[n]}
2)Shell數(shù)組的分片
直接通過 ${數(shù)組名[@或*]:起始位置:長度} 切片原先數(shù)組,返回是字符串,中間用“空格”分開,因此如果加上”()”,將得到切片數(shù)組。
使用舉例
[linuxdaxue@centos5 ~]$ a=(1 2 3 4 5) [linuxdaxue@centos5 ~]$ echo ${a[@]:0:3} 1 2 3 [linuxdaxue@centos5 ~]$ echo ${a[@]:1:4} 2 3 4 5 [linuxdaxue@centos5 ~]$ c=(${a[@]:1:4}) [linuxdaxue@centos5 ~]$ echo ${#c[@]} 4 [linuxdaxue@centos5 ~]$ echo ${c[*]} 2 3 4 5
3)Shell數(shù)組的替換
數(shù)組的替換方法是:${數(shù)組名[@或*]/查找字符/替換字符} 該操作不會改變原先數(shù)組內(nèi)容,如果需要修改,可以看上面例子,重新定義數(shù)據(jù)。
使用舉例
[linuxdaxue@centos5 ~]$ a=(1 2 3 4 5) [linuxdaxue@centos5 ~]$ echo ${a[@]/3/100} 1 2 100 4 5 [linuxdaxue@centos5 ~]$ echo ${a[@]} 1 2 3 4 5 [linuxdaxue@centos5 ~]$ a=(${a[@]/3/100}) [linuxdaxue@centos5 ~]$ echo ${a[@]} 1 2 100 4 5
好了,有關(guān)Shell數(shù)組的內(nèi)容就纖維大家介紹到這里,希望大家多多練習(xí),熟練掌握。