为什么我的bash数组不能正常工作?

时间:2015-05-18 07:41:12

标签: arrays linux bash append

这个脚本在AIX机箱上运行得很好,但是现在在RH linux机器上,数组似乎没有用。新RH盒上的版本是4.1.2

我声明我的数组

declare -a gridNames=()

我获得有关网格的信息

gridstats=`snmpwalk -v 2c -c splunk $host gridStatsTable -m $APPLIANCEMIB -OUQs -Ln`

除了从上面获取统计数据之外,我重复使用它来查找所有gridNames,然后使用gridNames数组来获取有关其地图的统计数据。

while read -r process; do
        gridNames=(${gridNames[@]} `grep gridName | awk -F "\"" '{print $(NF-1)}'`)
done <<< "$gridstats"

awk部分经过测试并正确返回一个网格名列表(在这种情况下只有一个)但是当我回显数组gridNames时它是空的。

我也尝试过使用

gridNames+=(`grep gridName | awk -F "\"" '{print $(NF-1)}'`)

但这不起作用

1 个答案:

答案 0 :(得分:2)

您需要使用+=运算符将元素附加到具有流程替换的数组:

while read -r process; do
    gridNames+=( $(grep 'gridName' | awk -F '"' '{print $(NF-1)}' <<< "$process") )
done < <(snmpwalk -v 2c -c splunk $host gridStatsTable -m $APPLIANCEMIB -OUQs -Ln)