2016-11-13 72 views
0

我正在写一个脚本,我正在写一些问题。 基本上我想检索一个活动IP地址列表并将它们添加到数组中。 但不幸的是,到处寻找后,我还没有找到一个解决方案。多行AWK输出到阵列

到目前为止,我有这样的:

#!/bin/bash 
ipnet="192.168.0.0/24" 
tail /proc/uptime | grep -o '^\S*' 
Iparray=($(nmap -n -sn $ipnet -oG - | awk '/Up$/{print $2}')) 
echo $Iparray[3] 
echo "Active IPs:" 
for i in "${Iparray[@]}" 
do 
    : 
    echo $Iparray[$i] 
done 

但不是预期的输出是IP的名单,我得到这个:

16977.41 
192.168.0.1[3] 
Active IPs: 
192.168.0.1[192.168.0.1] 
192.168.0.1[192.168.0.2] 
192.168.0.1[192.168.0.3] 
192.168.0.1[192.168.0.4] 
... 
192.168.0.1[192.168.0.254] 

不是真的搞不清发生了什么? 任何帮助,将不胜感激。

回答

0

非常微小的问题:

${Iparray[@]}是IP地址的列表,所以你可以:

for ip in ${Iparray[@]}; do 
    echo $ip 
done 

OR

如果你真的想使用索引:

for ((i=0; i<${#Iparray[@]}; i++)) ; do 
     echo ${Iparray[$i]} 
done 
+0

啊我明白了,非常感谢。 – Hampkade