Shell实现Key-Value式的哈希散列Map的使用

Shell里并没有内置hash类型,想要实现一种映射关系,可以用一个逼格比较高的玩意declare

具体实现方法

首先声明一下,我这里是声明一个虚拟机UUID到所在物理节点HOST的映射

declare -A UUID_TO_HOST_HASH

然后赋值,也就是填Key-Value对应关系;右边从nova show里取值可以不关注,右边相当于$host

for uuid in ${testing_vm_uuid_array[*]}; do
        UUID_TO_HOST_HASH[$uuid]=$(TABLE_KEY_GET_VALUE "nova show $uuid" "OS-EXT-SRV-ATTR:host")
done

这样$uuid=>$host的对应关系就建立起来了,$uuid作为KEY,就可以获取所在的$host物理节点,获取方式

host=${UUID_TO_HOST_HASH[$uuid]}

当然,实现了这种map关系,也可以跟其它脚本语言一样,输出所有keys,values,或者append等,操作方法跟python,perl类似

发表回复