2016-11-13 131 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