【发布时间】:2013-08-23 15:49:00
【问题描述】:
这是我在 bash 中运行的一个简单命令,但由于某种原因,该数组不会被填充。
array=() && sudo iwlist wlan0 scan | grep 'Address'| while read line; do array[${#array[@]}]=$line; done
我也尝试过以这种方式填充数组:
array=()
sudo iwlist wlan0 scan | grep 'Address'| while read line; do array+=($line); done
但它给了我相同的结果。我知道它有效,因为当我这样做时:
sudo iwlist wlan0 scan | grep 'Address'| while read line; do "echo $line"; done
它将打印从 grep 传送到 while 循环的每一行。
当我检查数组“echo ${#array[@]”的大小时,它将显示 0,如果我打印数组,它显然什么也不打印。您在该行中看到任何错误吗?
**更新。我通过使用这样的 for 循环让它工作:
for line in $(sudo iwlist wlan0 scan | grep 'Address' -A5); do array+=($line); done
【问题讨论】:
标签: bash loops while-loop