bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引。
数组的定义方法:
在单行中使用一列值定义一个数组
[root@new ~]# array1=(1 2 3 4 5 6)
使用索引-值定义
[root@new ~]# array2[0]="test1"[root@new ~]# array2[1]="test2"[root@new ~]# array2[2]="test3"
使用key-value键值对
[root@new ~]# fruits=([apple]=5 [orange]=3 [banana]=4)[root@new ~]# echo ${fruits[apple]}4
打印数组元素:
打印出数组指定索引的数组元素内容
[root@new ~]# echo ${array2[0]}test1
打印出数组中的所有值
[root@new ~]# echo ${array2[*]}test1 test2 test3
或者:
[root@new ~]# echo ${array2[@]}test1 test2 test3
打印出数组的长度
[root@new ~]# echo ${#array2[*]}3
截取数组-
[root@new ~]# array=(0 1 2 3 4)[root@new ~]# echo ${array[*]:1:3}1 2 3
更多用法参照--变量字符串的常用操作
列出数组索引
[root@new ~]# echo ${!array2[*]} 0 1 2
删除数组
删除单个数组
[root@new ~]# unset array2[0][root@new ~]# echo ${array2[*]}test2 test3
删除整个数组
[root@new ~]# unset array2[root@new ~]# echo ${array2[*]}[root@new ~]#
脚本应用:
[root@new sbin]# cat array.sh #/bin/bashlog=(`ls /var/log/httpd`)for((i=0;i<${#log[*]};i++))do echo "The $i log is ${log[i]}"done[root@new sbin]# sh array.sh The 0 log is www.a.org-access_logThe 1 log is www.a.org-error_logThe 2 log is www.b.net-access_logThe 3 log is www.b.net-error_log