我正在尝试为变量free_memlist创建索引数组,但它只打印第一个。但内循环很好。
代码:
#!/usr/bin/bash
eval array_host=($(xe host-list params=uuid | cut -c 17-))
#Loop through each xen server node
for i in ${array_host[@]};
do
free_mem1=$(xe host-data-source-query data-source=memory_free_kib uuid=$i)
free_mem=( ${free_mem1/\.*} )
done
host_memlist=($free_mem)
echo ${array_host[0]}
echo ${array_host[1]}
echo ${free_mem[0]}
echo ${free_mem[1]}
输出:
63c2fe78-48c2-4c48-b7dd-f68f8639a7af
6264dd23-76c9-4905-894f-a5fb212aa8dc
2921184
预期产出:
63c2fe78-48c2-4c48-b7dd-f68f8639a7af
6264dd23-76c9-4905-894f-a5fb212aa8dc
2921184
2721184
命令输出:xe host-list params = uuid | cut -c 17-如下:
63c2fe78-48c2-4c48-b7dd-f68f8639a7af
6264dd23-76c9-4905-894f-a5fb212aa8dc
不知道代码有什么问题。
答案 0 :(得分:1)
按要求重新提交答案;
行free_mem=( ${free_mem1/\.*} )
覆盖$free_mem
,而不是创建新的数组条目。使用+=
附加到数组。并用free_mem+=( ${free_mem1/\.*} )
替换该行按预期方式添加。