首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将snmpbulkwalk输出分配给bash脚本中的关联数组

将snmpbulkwalk输出分配给bash脚本中的关联数组
EN

Stack Overflow用户
提问于 2015-02-25 06:14:20
回答 1查看 317关注 0票数 1

我到处寻找答案,但我仍然无法找到解决方案。下面是我在本地服务器上运行的snmpbulkwalk的结果。

代码语言:javascript
复制
snmpbulkwalk -v2c -Oqs -m EGT-VIPr-TRx -c <community> <ip> egtViprOutputMuxSecDestPort | sed -e 's/egtViprOutputMuxSecDestPort\.//g'
Output
1 2001
4 2002
5 2003
8 2004

我的目标是将此输出赋给bash (例如array[1]=2001, array[4]=2002, ...)中的一个关联数组。下面是我过去将snmpbulkwalk输出赋值给标准数组时使用的代码。然而,我在使用关联数组时并没有成功。

代码语言:javascript
复制
declare -A array
array=($(snmpbulkwalk -v2c -Oqs -m EGT-VIPr-TRx -c <community> <ip> egtViprOutputMuxSecDestPort | sed -e 's/egtViprOutputMuxSecDestPort\.//g'))
echo ${array[1]}

Output
array: 1: must use subscript when assigning associative array
array: 2001: must use subscript when assigning associative array
array: 2: must use subscript when assigning associative array
array: 2002: must use subscript when assigning associative array
array: 3: must use subscript when assigning associative array
array: 2003: must use subscript when assigning associative array
array: 4: must use subscript when assigning associative array
array: 2004: must use subscript when assigning associative array

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-02-26 00:58:51

我已经找到了一个可行的解决方案,并将其答案张贴出来以供将来参考。经过多次尝试和错误,while read循环实现了我的最终目标。

代码语言:javascript
复制
declare -A array

while read id value; do
        array[$id]=$value
done < <(snmpbulkwalk -v2c -Oqs -m EGT-VIPr-TRx -c <community> <ip> egtViprOutputMuxSecDestPort | sed -e 's/egtViprOutputMuxSecDestPort\.//g')

echo ${array[1]}

Output
2001

在将snmpbulkwalk的输出读入我的循环的语法方面,我遇到了一些困难,但上面的代码在我的场景中工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28707411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档