为什么我没有在数组中获得第二个元素?

时间:2017-08-06 08:00:21

标签: bash

我正在尝试为变量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

不知道代码有什么问题。

1 个答案:

答案 0 :(得分:1)

按要求重新提交答案;

free_mem=( ${free_mem1/\.*} )覆盖$free_mem,而不是创建新的数组条目。使用+=附加到数组。并用free_mem+=( ${free_mem1/\.*} )替换该行按预期方式添加。