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