【发布时间】:2016-05-10 02:24:20
【问题描述】:
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 打印,输出只是空行。这里发生了什么?感谢您的帮助。
【问题讨论】:
-
首先,您需要开始学习如何使用 cmets。
-
感谢@user000001,我忽略了管道,用临时文件写入/读取替换了管道机制。不幸的是,我们操作系统中的当前 bash 是 4.0,我不能使用最后一个管道选项。问题解决了。