多行 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
我正在编写的脚本有一些问题。 基本上我想检索活动 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