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类似