2017-08-06 60 views
0

我想創建變量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主機列表PARAMS = UUID |切-c 17-如下:

63c2fe78-48c2-4c48-b7dd-f68f8639a7af 


6264dd23-76c9-4905-894f-a5fb212aa8dc 

不知道什麼是錯的代碼。

+0

添加'xe host-list params = uuid | cut -c 17-「來回答你的問題。 – Cyrus

+0

@Cyrus,請檢查命令的輸出。謝謝。 – rmstmg

+1

爲什麼你使用'eval'? 'array_host'將被填充而不調用它。 –

回答

1

按要求重新提交作爲答案;

free_mem=(${free_mem1/\.*})覆蓋$free_mem,不進行新的數組輸入。追加到數組是通過+=完成的。並按照預期將free_mem+=(${free_mem1/\.*})替換爲該行。

相關問題