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民工!

  • 相关阅读:
    Markdown的简介(转)
    写在二月的尾巴上
    The Pragmatic Programmer 读书笔记
    C/C++语言的一些精简归纳
    一般常用设计模式及原则的思想小结
    常用UML模型简要小结
    LeetCode 101. Symmetric Tree
    LeetCode 100. Same Tree
    LeetCode 99. Recover Binary Search Tree
    线索二叉树的建立与遍历
  • 原文地址:https://www.cnblogs.com/5201351/p/15175013.html
Copyright © 2011-2022 走看看