zoukankan      html  css  js  c++  java
  • 关于shell中的数组-关联数组-associative array

    在bash-shell中,数组主要分2种,indexed array 和 associative array

    在linux下对于新版的bash,一般都是支持关联数组,关联数组有点像其他语言的字典一样,键值对形式

    注:对于关联数组,对于元素(键值对),是无序的,在遍历时,或者输出全部键/值,可以观察出

    关于本文,如需要转载,注明出处:https://www.cnblogs.com/5201351

    如有问题,也可以联系笔者QQ:5201351

    例如,我们可以创建一个叫做 color 的关联数组,并用颜色名字作为下标

    不同于普通数组,关联数组必须使用带有-A选项的 declare 命令进行显示声明的方式创建

    declare -A color
    color[black]=#000000
    color["red"]="#ff0000"
    color["green"]="#00ff00"
    color["blue"]="#0000ff"

    也可以在定义的同时赋值,每个键值对,使用空格隔开:

    笔者测试过,不加declare -A显示声明,数组还是会被视为索引数组,就一个元素,而且是取的最后一个键对应的值

    declare -A color=([black]=#000000 ["red"]="#ff0000" ["green"]="#00ff00" ["blue"]="#0000ff")

    访问关联数组元素,需要指定键,以上例为准,如果不指定键,将返回空值:

    ${color[black]}

    获取所有的关联数组元素的值:

    ${array_name[@]}

    ${array_name[*]}

    获取所有的关联数组元素的键:
    ${!array_name[@]}

    ${!array_name[*]}

    关于@与*的区别:如shell脚本特殊变量一样,可以通过for循环时,对数组变量加上双引号看出微小的区别

    如"${array_name[@]}"和"${array_name[*]}" ,因此有些场景可能使用@可能更合适一点,但大多数情况下两者没有区别的

     

    尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/15175013.html

    作者:一名卑微的IT民工

    出处:https://www.cnblogs.com/5201351

    本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。

    博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。

    博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!

  • 相关阅读:
    Exchange 2016与国内版O365混合部署(1):过程总览
    Office365与本地Exchange混合部署之邮件流介绍详情
    清理Exchange 2013和2016的Log文件(精华)
    Exchange2016日志路径
    C:/inetpub/logs/logfile/路径详解
    使用VMwareVCenterConverter迁移到虚拟机(p2v)
    WindowsServer安全基线
    利用WSUS部署更新程序
    Storefront与NetScaler的集成配置
    运维技巧(13):Exchange证书申请导入
  • 原文地址:https://www.cnblogs.com/5201351/p/15175013.html
Copyright © 2011-2022 走看看