303 for count in "${nodeof[@]}"; do
304 lines=`GetNodeMemory $count`
305 printf %s "$lines" | while IFS= read -r line; do \
306 {
307 key=`echo $line | awk -F':' '{print $1}' | cut -d' ' -f3`
308 [[ -z ${key} && ${key} ]] && continue
309 for chk in "${MemVar[@]}"; do
310 [[ "${key}" == "${chk#*:}" ]] && break
311 done
312 #echo "ke:${chk#*:} - ind:${chk%%:*}"
313 NodeMem[$count,${chk%%:*}]=`echo $line \
314 | /bin/grep -i "${key}" | awk -F':' '{print $2}' \
315 | cut -d' ' -f2`
316 #echo "${chk#*:} ${NodeMem[$count,${chk%%:*}]}"
317 chk=""
318 } done
319 done
320
321 for count in "${nodeof[@]}"; do
322 for chk in "${MemVar[@]}"; do
323 echo "${NodeMem[${count},${chk%%:*}]}"
324 done
325 done这里的NodeMem是一个二维数组,如果我使用line#316打印,则数组值可以正常打印。但是,如果使用line#323打印,则输出仅为空行。这是怎么回事?谢谢你的帮助。
发布于 2016-05-10 01:48:08
Bash不支持多维数组。当你给foo,bar赋值时,它的计算结果是索引0。对于您正在使用的语法,array1,5与array5相同。此外,array2,5与array5相同。
请参阅上一篇关于如何伪造多维数组Bash two dimensional arrays的文章
https://stackoverflow.com/questions/37121956
复制相似问题