Shell编程之数组
1.什么是数组:
数组其实也算是变量,传统的变量只能是存储一个值,但是数组可以存储多个值。
2.数组的分类:
shell数组分为普通数组和关联普通数组:
普通数组:只能使用整数作为数组索引。
关联数组:可以使用字符串作为数组索引。
例子:
books=(python java shell) #普通数组
---------------------
|python |java |shell|
| 0 | 1 | 2 | #索引(下标)
注:普通数组下标只能是整数
-------------------------------------------------------
info=([name]=liu [age]=16 [skill]=shell) 关联数组
-------------------------------------------------------
|liu |16 |shell |
|name|age|skill | #索引(下标)
注:关联数组下标可以是字符串
-------------------------------------------------------
3.数组基本使用:
1)普通数组仅能使用整数来作为索引:
1.1普通数组的赋值:
#方式一:针对每个索引进行赋值(数组名[索引]=变量值)
[root@shell ~]# array[0]=pear
[root@shell ~]# array[1]=apple
[root@shell ~]# array[2]=orange
#方式二:一次赋多个值(数组名=(多个变量值))
[root@shell ~]# array2=(tom jack alice)
[root@shell ~]# array3=(tom jack alice "bash shell")
[root@shell ~]# array4(1 2 3 "linux shell" [20]=docker)
-------------------------------------------------------
1.2 如何查看普通数组的赋值与访问数组的内容
#1.查看普通数组:
[root@shell ~]# declare -a
#2.如何访问数组中的元素
[root@shell ~]# echo $(array1[0]) #数组名加索引即可访问数组中的元素
pear
[root@shell ~]# echo ${array1[@]} #访问数组中所有数据,相当于echo ${array[*]}
pear apple orange
[root@shell ~]# echo ${!array1[@]} #获取数组的索引,在数据遍历的时候有用
0 1 2 3
[root@shell ~]# echo ${$array[@]} #统计数组元素的个数
3
-------------------------------------------------------
2.关联数组能使用字符串的方式作为索引:
2.1 关联数组的赋值:
#必须先申请这是一个关联数组
[root@shell ~]# declare -A info
[root@shell ~]# declare -A info2
#方式一:关联数组的赋值(数组名[索引]=变量值)
[root@shell ~]# info[index1]=pear
[root@shell ~]# info[index2]=apple
[root@shell ~]# info[index3]=arange
#方式二:关联数组的赋值(数组名=([索引1]=变量值2 [索引2]=变量值2))
[root@shell ~]# info2=([index1]=linux [index2]=nginx [index3]=docker [insex4]='bash shell')
#查看关联数组
[root@shell ~]# declare -A
3.如何访问关联数组中的数据
[root@shell ~]# echo ${info2[index2]} #访问数组中第二个元素
nginx
[root@shell ~]# echo ${info2[@]} #访问数组中所有元素 等同于echo ${info2[*]}
bash shell linux nginx docker
[root@shell ~]# echo ${!tt_array2[@]} #访问数组中所有元素的索引
index4 index1 index2 index3
==============================================================
4.数组遍历与循环
通过数组元素的索引进行遍历(推荐) 注意:将统计的对象作为数组的索引
仅针对关联数据
vi array_hosts.sh
while read line
do
hosts[0]=10.0.0.1
hosts[1]=127.0.0.1
done</etc/hosts
echo "查看数组的索引对应的值:${hosts[0]}"
for i in ${!hosts[@]}
do
echo hosts数组的索引:$i hosts数组的值:${hosts[$i]}
done
[root@shell ~]# sh array_hosts.sh
查看数组的索引对应的值:10.0.0.1
hosts数组的索引:0 hosts数组的值:10.0.0.1
hosts数组的索引:1 hosts数组的值:127.0.0.1
网友评论