Map定义:

在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明

方式1:

declare -A myMap
myMap["my03"]=""

方式2:

declare -A myMap=(["my01"]="" ["my02"]="")
myMap["my03"]=""
myMap["my04"]=""

Map初始化:

与array类似,可以使用括号直接初始化,也可以通过添加的方式来初始化数据,与array不同的是,括号直接初始化时使用的为一个键值对,添加元素时,下标可以不是整数

myMap["my03"]=""
myMap["my04"]=""

输出Map所有的key、value、长度:

# )输出所有的key
#若未使用declare声明map,则此处将输出0,与预期输出不符,此处输出语句格式比arry多了一个!
echo ${!myMap[@]}
#)输出所有value
#与array输出格式相同
echo ${myMap[@]}
#)输出map长度
#与array输出格式相同
echo ${#myMap[@]}

Map遍历:

#)遍历,根据key找到对应的value
for key in ${!myMap[*]};do
echo $key
echo ${myMap[$key]}
done
#)遍历所有的key
for key in ${!myMap[@]};do
echo $key
echo ${myMap[$key]}
done
#)遍历所有的value
for val in ${myMap[@]};do
echo $val
done

Map测试:

[root@cdh- shell-test]# more map-test.sh
#!/bin/sh echo "一、定义Map:declare -A myMap=([\"myMap00\"]=\"00\" [\"myMap01\"]=\"01\")"
declare -A myMap=(["my00"]="" ["my01"]="")
myMap["my02"]=""
myMap["my03"]="" echo "二、输出所有的key:"
echo ${!myMap[@]} echo "三、输出所有value:"
echo ${myMap[@]} echo "四、输出map的长度:"
echo ${#myMap[@]} echo "五、遍历,根据key找到对应的value:"
for key in ${!myMap[*]};do
echo "key:"$key
echo "value:"${myMap[$key]}
done echo "六、遍历所有的key:"
for key in ${!myMap[@]};do
echo "key:"$key
echo "value:"${myMap[$key]}
done echo "七、遍历所有value:"
for val in ${myMap[@]};do
echo "value:"$val
done

输出:

[root@cdh- shell-test]# ./map-test.sh
一、定义Map:declare -A myMap=(["myMap00"]="" ["myMap01"]="")
二、输出所有的key:
my02 my03 my00 my01
三、输出所有value: 四、输出map的长度: 五、遍历,根据key找到对应的value:
key:my02
value:
key:my03
value:
key:my00
value:
key:my01
value:
六、遍历所有的key:
key:my02
value:
key:my03
value:
key:my00
value:
key:my01
value:
七、遍历所有value:
value:
value:
value:
value:
[root@cdh- shell-test]#

参考《Shell中map的使用

Linux Shell:Map的用法的更多相关文章

  1. (12)Linux shell之read 用法

    Linux shell之read 用法 #!/bin/bash#read 用来读取屏幕输入或是读取文件内容.read -p  "please input you  name: " ...

  2. linux shell date的用法

    该随笔引用自https://www.cnblogs.com/alsodzy/p/8403870.html 在 linux shell 里面date命令的参数 %% 一个文字的 % %a 当前local ...

  3. Linux Shell nohup命令用法

    linux的nohup命令的用法.   在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /us ...

  4. Linux shell - shift命令用法(转载)

    位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常 ...

  5. Linux shell - cut命令用法(转载)

    cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file] 使用说明 cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标 ...

  6. Linux shell - scp命令用法

    例子: 远程复制一个文件从服务器A (172.0.0.0) /home/test/file1.txt 到 服务器B (172.0.0.1) /home/test 服务器A和服务器B的用户是 test ...

  7. 《Linux Shell 脚本攻略》读书笔记

    本书主要讲解一些linux shell命令的用法,讲解一些shell的奇技淫巧. 第一章 小试牛刀 主要介绍一些基本shell指令 终端打印:echo.printf 别名:alias 终端处理工具:t ...

  8. linux shell的here document用法(cat << EOF)

    什么是Here Document?Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下cmd << delimiter  Here Docu ...

  9. linux shell的here document用法

    转载自: http://my.oschina.net/u/1032146/blog/146941 什么是Here Document?Here Document 是在Linux Shell 中的一种特殊 ...

  10. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

随机推荐

  1. 查找单链表中倒数第k个结点

    本文转自:程序员面试题6--查找链表中倒数第k个结点 题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode { i ...

  2. <choose><when><if>

    --说明:choose类似于switch,其中的when如果不符合则进入otherwise(类似于default),可以结合if标签使用. -- <select> -- SELECT * ...

  3. 进程中join方法的使用

    在进程中:join方法 是让主进程等待子进程运行完毕后再执行主进程的.(即主进程阻塞) 示例 # -*- coding: utf-8 -*- from multiprocessing import P ...

  4. PHP三种输出的不同类型

    var_dump() 能打印出类型print_r() 只能打出值echo() 是正常输出... 需要精确调试的时候用 var_dump();一般查看的时候用 print_r()另外 , echo不能显 ...

  5. X509IncludeOption 枚举

    X509IncludeOption 枚举 指定 X.509 数据应包括 X.509 证书链的哪些内容. EndCertOnly 2 X.509 链信息中仅包括最终证书. ExcludeRoot 1 包 ...

  6. 拿webshell方法汇总

    地址:https://blog.csdn.net/Breeze_CAT/article/details/80044676

  7. BZOJ1485: [HNOI2009]有趣的数列(卡特兰数+快速幂)

    题目链接 传送门 题面 思路 打表可以发现前六项分别为1,2,5,12,42,132,加上\(n=0\)时的1构成了卡特兰数的前几项. 看别人的题解说把每一个数扫一遍,奇数项当成入栈,偶数项当成出栈, ...

  8. docker学习3-镜像的基本使用

    前言 Docker的三大核心概念:镜像.容器.仓库.初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似 我们可以把镜像看作类,把容器看作类实例化后的对象. d ...

  9. 4.Linq To Xml操作XML增删改查

    转自https://www.cnblogs.com/wujy/p/3366812.html 对XML文件的操作在平时项目中经常要运用到,比如用于存放一些配置相关的内容:本文将简单运用Linq TO X ...

  10. 【转】libgo

    原文:https://blog.csdn.net/libaineu2004/article/details/80554870 ------------------------------------- ...