zoukankan      html  css  js  c++  java
  • Linux 数组

    :介绍

    在shell4.0之后支持普通数组和关联数组,普通数组只能使用整数作为索引,关联数组可以使用字符串作为索引。

    普通数组

    普通数组的定义方法有如下两种,注意数组的索引是从0开始

    方法1:值之间是使用空格隔开

    array=(1 2 3 4 5)

    方法2:直接定义索引-值的方法,其实该方法相当于是在给数组元素赋值。

    array[0]="value"

    array[1]="value"

    1.查看单个数组元素值,值的下标从0开始。

    [root@localhost backup]# echo ${array[0]}
    1

    2.查询数组所有元素的值,使用*或者@

    [root@localhost backup]# echo ${array[*]}
    1 2 3 4 5
    [root@localhost backup]# echo ${array[@]}
    1 2 3 4 5

    3.查询数组元素的个数,#

    [root@localhost backup]# echo ${#array[*]}
    5

    4.改变数组元素的值

    [root@localhost backup]# array[2]="33"
    [root@localhost backup]# echo ${array[*]}
    1 2 33 4 5

    5.定义索引并引用

    [root@localhost backup]# i=3
    [root@localhost backup]# echo ${array[$i]}
    4

    6.查询数组的索引,使用!

    [root@localhost backup]# echo ${!array[*]}
    0 1 2 3 4

    关联数组

    普通数组的索引只能是整数,比如array[0],array[1]等,关联数组的索引可以是字符串,使用关联数组之前必须先声明关联数组。

    声明关联数组:

    declare -A ass_array

    将元素添加到关联数组,方法有两种:

    方法1:列表发赋值

    ass_array=( [index1]=val1 [index2]=val2)

    方法2:单独赋值

    ass_array[index1]=val1

    ass_array[index2]=val2

    举例:

    declare -A ass_array
    ass_array=([book]="10 yuan" [pen]="1 yuan")

    1.显示单个数组元素内容

    [root@localhost backup]# echo ${ass_array[book]}
    10 yuan

    2.查询关联数组所有元素内容

    echo ${ass_array[*]}
    1 yuan 10 yuan

    3.查询关联数组的索引,在数组前使用!

    [root@localhost backup]# echo ${!ass_array[*]}
    pen book

    4.查询关联数组的元素个数

    [root@localhost backup]# echo ${#ass_array[*]}
    2

    动态数组生成方法

    方法1:

    可以使用seq
    [root@localhost backup]# numarray=$(seq 100)
    [root@localhost backup]# echo $numarray
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

    方法2:

    [root@localhost backup]# echo {1..100}
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

    这两种定义的动态数组可以直接在循环中调用,例如:

    for i in $mumarray;do echo $i;done;
    
    for i in {1..100};do echo $i;done;

    测试二者的效率,可以在其前面加上time

    time echo $(seq 10000)
    
    real    0m0.056s
    user    0m0.047s
    sys    0m0.002s
    time echo {1..10000}
    
    real    0m0.030s
    user    0m0.023s
    sys    0m0.000s

    测试10000个元素,显然第二种方法性能会更好。

    总结

     普通数组和关联数组只是定义的方法不一样,查询的方法是一样的。

    备注:

        作者:pursuer.chen

        博客:http://www.cnblogs.com/chenmh

    本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

    《欢迎交流讨论》

  • 相关阅读:
    AJAX---发送GET请求并传递参数
    AJAX---遵循http协议
    AJAX---onreadystatechange事件中获取相应内容和readystate状态
    AJAX---发送请求
    AJAX---简介
    AJAX---学习roadmap
    jQuery---jquery.ui实现新闻模块
    jQuery---jquery.color.js和jquery.lazyload.js的使用
    jQuery---jQuery插件
    通过JavaScript调用SOAP终结点执行实体消息
  • 原文地址:https://www.cnblogs.com/chenmh/p/5439964.html
Copyright © 2011-2022 走看看