最近因为统计日志数据(和Pig分析结果比对),用到Shell数组比较多,所以总结下:
定义数组
arr=(abc.cn bbc nba.com.cn)
arr=("abc.cn" "bbc" "nba.com.cn")
arr=([0]="aa" arr[3]=2)
关联数组(???????)
arr=([one]="aa" arr[three]=2)
截取指定数组元素指定的长度
localhost:~ ylchou$ echo ${arr3[*]}
ab.com toread.com.cn www.ef.org ab
localhost:~ ylchou$ echo ${arr3[1]:2:3}
rea
清除指定的单个数组元素:
[root@pps ~]# unset arr[2]
清除整个数组:
[root@pps ~]# unset arr
Linux Shell 关联数组(在低版本的shell中不可用,在mac中也有bug?不是。因为在mac中bash版本为3.2.53)
所谓关联数组就是使用字符串作为索引值对数组进行访问的数组;
2.1 关联数组的声明:
declare -A arrayName;
2.2 关联数组初始化与元素添加:
2.2.1 使用 "[index]=value" 列表的方式对关联数组添加元素:
declare -A assArray1;
assArray1=([index1]=cat [index2]=dogs [index98]=fish);
2.2.2 使用 "arrayName[index]=value" 的方式对关联数组进行添加元素:
declare -A assArray2;
assArray2[pear]=100;
assArray2[apple]=3000;
assArray2[orange]=70000;
2.3 关联数组的访问:
2.3.1 关联数组的元素访问
关联数组使用 "arrayName[index]" 的方式访问数组元素
${arrayName[index]}
2.3.2 遍历关联数组的所有元素
${arrayName[*]}
${arrayName[@]}
2.3.3 获取关联数组的元素个数
${#arrayName[*]}
${#arrayName[@]}
2.3.4 获取关联数组所有可访问元素的索引值
${!arrayName[*]}
${!arrayName[@]}
可以参考http://my.oschina.net/uyinn/blog/266821来写更多
慢慢总结
未完待续