当前位置: > shell编程 >

shell数组操作

时间:2015-01-18 01:44来源:linux.it.net.cn 作者:IT

数组是一种很常见的数据结构。
shell中有普通的数字索引数组和字符串索引的关联索引数组(bash 4.0以后具有)
普通数字索引数组
1.声明数组
arr=(e1 e2 e3 e 4 e5) #每个数组元素之间使用空格隔开
数组访问
echo ${$arr[0]} #访问数组第一个元素
数组赋值
arr[3]=10
arr[4]=20

数组删除
unset(arr[1]) #删除第2个元素
unset arr #删除所有数组元素

获取数组长度
echo ${#arr} #在数组名前面加上#符号
echo ${#arr[*]} #或者 ${#arr[@]}

数组元素截取
格式:${arr[@]:位置:个数}
arr=(1 a 2 b 3 c)
#获取除了第一个元素之外的所有元素
${arr[*]:0} #:后面
echo ${arr[@]:1:3} #取数组arr 3个元素,从第2个开始
echo ${arr[@]:1} #从arr的第二个元素开始取,一直取到最后一个

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#/bin/bash
arr=(bc ab b c d e f g)
#匹配删除数组元素-#表示最短的元素开始匹配
echo ${arr[@]#*b}
# ##从左边开始最长的字符串进行匹配
echo ${arr[@]##b}
 
#从字符串的 % 结尾开始,最短的匹配
echo ${arr[@] %b}
#从字符串的 %% 结尾开始,最长匹配
 
echo ${arr[@] %%b}
 
#元素替换单个 /
echo ${arr[@] /b/bb}
 
#删除匹配到的字符-过滤
echo ${arr[@] //b/}
 
#替换字符串前端子串
echo ${arr[@] /#b/z}
 
#替换字符串后端子串
 
echo ${arr[@] /%b/z}

定义关联数组

 

1
2
3
4
5
#/bin/bash
#关联数组
declare -A arr
arr=([z]=zz [a]=aa [c]=cc)
echo ${arr[@]}

#访问
echo ${arr[z]} #zz
#赋值/添加元素
arr[z]=zzz
echo ${arr[z]} #zzz

获取所有元素的key
echo ${!arr[@]} #很有意思。同样使用于索引数组

@,*都可以访问数组的全部元素信息
获取数组长度
echo ${#arr[@]}




(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容