Mutli-line AWK输出到阵列

时间:2016-11-13 14:07:52

标签: arrays bash awk nmap

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

到目前为止,我有这个:

#!/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]

不太确定发生了什么...... 任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

非常小的问题:

${Iparray[@]}是IP地址列表,因此您可以:

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

OR

如果你真的想使用索引:

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