我到处寻找答案,但我仍然无法找到解决方案。下面是我在本地服务器上运行的snmpbulkwalk的结果。
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输出赋值给标准数组时使用的代码。然而,我在使用关联数组时并没有成功。
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任何帮助都将不胜感激。
发布于 2015-02-26 00:58:51
我已经找到了一个可行的解决方案,并将其答案张贴出来以供将来参考。经过多次尝试和错误,while read循环实现了我的最终目标。
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的输出读入我的循环的语法方面,我遇到了一些困难,但上面的代码在我的场景中工作得很好。
https://stackoverflow.com/questions/28707411
复制相似问题