Linux Shell:Map的用法

Map定义:

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

方式1:

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

方式2:

declare -A myMap=(["my01"]="01" ["my02"]="02")
myMap["my03"]="03"
myMap["my04"]="04"

Map初始化:

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

myMap["my03"]="03"
myMap["my04"]="04"

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

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

Map遍历:

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

Map测试:

[[email protected]143 shell-test]# more map-test.sh
#!/bin/sh

echo "一、定义Map:declare -A myMap=([\"myMap00\"]=\"00\" [\"myMap01\"]=\"01\")"
declare -A myMap=(["my00"]="00" ["my01"]="01")
myMap["my02"]="02"
myMap["my03"]="03"

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

输出:

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

参考《Shell中map的使用

原文地址:https://www.cnblogs.com/yy3b2007com/p/11267237.html

时间: 2024-12-24 04:04:44

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

【shell】Linux shell中括号的用法

Linux shell中括号的用法 概述 本文主要介绍Linux中括号的用法,主要包含判断文件和变量. **注意事项**:中括号两边必须有空格. 使用中括号会涉及到的知识 &&.|| 在本文对文件或者变量做判断的时候,可能会多次使用到&&和||这两个符号,所以在我们进入中括号的学习之前首先了解一下这两个符号的作用. &&:并 --> 两真才为真,如果有两个条件,第一个为真,那么肯定会判断第二个条件:如果第一个条件为假,那么第二个条件将不会判断.(第一个

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

位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常有用的 Unix 命令:shift.我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*.若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等

linux shell中split用法

[[email protected] ~]# split [-bl] file PREFIX 参数: -b  :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等: -l  :以行数来进行分割. 范例: 范例一:我的 /etc/termcap 有七百多K,若想要分成 300K 一个档案时? [[email protected] ~]# cd /tmp; split -b 300k /etc/termcap termcap [[email protected] tmp]# ls -l

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

cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file] 使用说明 cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出. 如果不指定 File 参数,cut 命令将读取标准输入.必须指定 -b.-c 或 -f 标志之一. 主要参数 -b :以字节为单位进行分割.这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志. -c :以字符为单位进行分割. -d :自定义分隔符,默认为制表符. -f :与-d一起

linux shell中$的用法

以下列举了$的常用方法 $n        表示传递给脚本的参数,$1表示第一个,$2表示第二个- $#        表示传递给脚本的参数个数 $0         表示脚本的名字. $?         表示上一次命令的退出状态,成功为0,否则为1 $$        表示当前程序进程的ID号 $!         表示上次程序进程的ID号 [email protected]       传递给脚本的所有参数 举例说明: [email protected]:~$ vi 1.sh #!usr/

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

本书主要讲解一些linux shell命令的用法,讲解一些shell的奇技淫巧. 第一章 小试牛刀 主要介绍一些基本shell指令 终端打印:echo.printf 别名:alias 终端处理工具:tput,stty 日期:date 第二章 命令之乐 介绍一些基本命令 读取.显示.拼接文件:cat 录制回放会话:script,scriptreplay 文件查找:find 提供管道参数:xargs 转换:tr 排序.唯一:sort.uniq 临时文件:mktemp 分割文件和数据:split,cs

Linux shell脚本中shift的用法说明

Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). 示例1:依次读取输入的参数并打印参数个数: run.sh: #!/bin/bash while [ $# != 0 ];do echo "第一个参数为:$1,参数个数为:$#" shift done 输入如下命令运行:run.sh a b c d e f 结果显示如下: 第一个参数为:a

Linux shell ${}简单用法

转自:Linux shell ${}简单用法 为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt我们可以用 ${ } 分别替换获得不同的值:${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt${file#*.}:拿掉第一个 . 及其左边的字符串:fil

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

什么是Here Document Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter   Here Document Content delimiter 它的作用就是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数. 比如在终端中输入cat << EOF ,系统会提示继续进行输入,输入多行信息再输入EOF,中间输入的信息将会显示在

linux shell的here document用法

转载自: http://my.oschina.net/u/1032146/blog/146941 什么是Here Document?Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下cmd << delimiter  Here Document Contentdelimiter 其作用是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数;比如在终端中输入cat <<