shell的map简单的添加、查找、删除、遍历

【shell的map简单的添加、查找、删除、遍历】想建立一个类似map的key——value集合
搜了下shell有没有map,倒是搜到了declare -A mymap,需要sh版本支持(>=version 4.1.2),定义、添加、取值、遍历
这里用到eval,不然我不知道怎么用awk给map赋值,之所以写成边处理字符串或者文本边赋值是考虑到实际使用的时候,在处理的过程中需要把处理得到的key和value赋值给map,而不是写个for循环map[key]=value,那只能做已知的循环遍历处理,我的需求只是处理些不是特别大的测试用的配置文本,不然就用python来写了
测试待处理key-value文本
vim test.txt
key1:value1
key2:value2
key3:value3
key4:value4
key5:value5

#!/bin/bash str=(`cat ./test.txt | awk -F ' ' '{print $1}'`) declare -A mymap; #定义 for i in ${!str[@]} do #赋值 eval $(echo ${str[i]} | awk '{split($0, filearray, ":"); print "mymap["filearray[1]"]="filearray[2]}') done #输出所有key值 echo ${!mymap[@]} #输出所有value值 echo ${mymap[@]} #遍历 for key in ${!mymap[@]} do echo "${mymap[$key]}" done#查找和删除 findkey="keyx" value="https://www.it610.com/article/valuex" # 查找 echo ${mymap[$findkey]} #查找插入和删除,找到就删掉,没找到就插入 if [ ! -n "${mymap[$key]}" ] then mymap[$findkey]=$value else echo "find value" unset mymap[$findkey] fi

    推荐阅读