当前位置: 移动技术网 > 网络运营>服务器>Linux > Linux Shell Map的用法详解

Linux Shell Map的用法详解

2020年05月12日  | 移动技术网网络运营  | 我要评论

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测试:

[root@cdh-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

输出:

[root@cdh-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
[root@cdh-143 shell-test]#

到此这篇关于linux shell map的用法详解的文章就介绍到这了,更多相关linux shell map内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网