这个脚本在AIX机器上工作得很好,但是现在在RH linux机器上,阵列似乎不起作用。新RH盒上的版本是4.1.2

我声明我的数组

declare -a gridNames=()

我得到有关网格的信息
gridstats=`snmpwalk -v 2c -c splunk $host gridStatsTable -m $APPLIANCEMIB -OUQs -Ln`

除了从上面获取统计信息外,我还将重用它来查找所有gridNames,然后将使用gridNames数组获取有关其 map 的统计信息。
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)}'`)

但这也不起作用

最佳答案

您需要使用+=运算符通过进程替换将元素追加到数组:

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)

09-28 00:15