Linux Shell数组和关联数组

最近因为统计日志数据(和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来写更多


慢慢总结

未完待续

你可能感兴趣的:(linux,shell,数组,关联数组)