多行 AWK 输出到数组

Mutli-line AWK output to array

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

到目前为止我有这个:

#!/bin/bash
ipnet="192.168.0.0/24"
tail /proc/uptime | grep -o '^\S*'
Iparray=($(nmap -n -sn $ipnet -oG - | awk '/Up$/{print }'))
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]

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

非常小的问题:

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

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

如果你真的想使用索引:

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