bash while循环中的奇怪范围问题

时间:2014-06-17 15:47:20

标签: arrays bash

我在脚本中有以下代码,它应该可以工作但在内部循环存在时不提供数组元素。变量IPLISTING的范围是全局的。

declare -a IPLISTING    
foo(){    
CONT=0
allIPs=$(ifconfig | grep "inet addr" | awk '{print $2}' | cut -d ":" -f2)
i=0
while [[ CONT -eq 0 ]] ; do #loop so that it doesn't exit until a valid selection is made
    echo "The following networks were found. Please select one to scan:"; echo
    echo "$allIPs" | while read singleIP ; do
        ((i++))
        IPLISTING[$i]=$(echo $singleIP| cut -d "." -f1-3|sed -e 's/$/.0/')
        echo $i ":" $(echo ${IPLISTING[$i]}) #This works
    done
echo ${IPLISTING[1]} #This does not work. When I echo this it gives me nothing
....
stuff
....
CONT=1
done
}

这是一个选择菜单,这样我就可以简单地将数据拉出数组,但是当我退出时,数组完全是空的。我在一个不同的测试中用一个简单的循环尝试了这个并且它有效。另外,我已经验证了所有命令。我似乎无法确定问题所在。任何帮助表示赞赏。感谢。

0 个答案:

没有答案