本文是Linux Shell系列教程的第(六)篇,更多shell教程請看:Linux Shell系列教程 Shell在編程方面非常強大,其數組功能也非常的完善,今天就為大家介紹下Shell數組的用法。 Shell支持一維數組(不支持多維數組),並且沒有限定數組的大小。 類似與C語言,數組元素的下標由 ...
本文是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數組的賦值
直接通過 數組名[下標] 就可以對其進行引用賦值,如果下標不存在,自動添加新一個數組元素
使用示例:
[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數組的讀取
讀取Shell數組元素值的一般格式是:
${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
使用@ 或 * 可以獲取數組中的所有元素,例如:
${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數組的刪除
直接通過:unset 數組[下標] 可以清除相應的元素,不帶下標,清除整個數據。
使用示例
[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
五、Shell數組的其他常用操作
1)Shell數組長度
用${#數組名[@或*]} 可以得到數組長度,示例如下:
# 取得數組元素的個數 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數組單個元素的長度 lengthn=${#array_name[n]}
2)Shell數組的分片
直接通過 ${數組名[@或*]:起始位置:長度} 切片原先數組,返回是字元串,中間用“空格”分開,因此如果加上”()”,將得到切片數組。
使用舉例
[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數組的替換
數組的替換方法是:${數組名[@或*]/查找字元/替換字元} 該操作不會改變原先數組內容,如果需要修改,可以看上面例子,重新定義數據。
使用舉例
[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
好了,有關Shell數組的內容就纖維大家介紹到這裡,希望大家多多練習,熟練掌握。
更多shell教程請看:Linux Shell系列教程
本文固定鏈接:linux大學網_Linux學習_Shell_嵌入式Linux--Linux Shell系列教程之(六)Shell數組