arrays - 为什么我的 bash 数组追加不起作用?

标签 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 数组来获取有关其 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)}'`)

但这也不起作用

最佳答案

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

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)

关于arrays - 为什么我的 bash 数组追加不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30297583/

相关文章:

c++ - 传递数组时类中出现错误指针错误

c++ - 段。错误调整数组大小 C++

linux - 避免从 Linux 上的可执行文件中导出符号

linux - 定位扩展属性

带有枚举的 Java 数组

c++ - 错误 : name lookup of 'i' changed for ISO 'for' scoping

linux - Postgres : invalid argument: "psql"

linux - 如何将 Linux 命令行显示为 1 行?

regex - 转义bash中给定的字符列表

bash - dwm xsetroot CPU使用率显示与awk