美文网首页
Shell编程之数组

Shell编程之数组

作者: 你好树洞先生 | 来源:发表于2019-12-23 10:36 被阅读0次


    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

    相关文章

      网友评论

          本文标题:Shell编程之数组

          本文链接:https://www.haomeiwen.com/subject/xacznctx.html