shell脚本学习总结02--数组

时间:2023-03-08 23:44:00
shell脚本学习总结02--数组

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