我需要 ping 设备列表并存储响应 ping 的设备的 IP。我有这段代码:
function add_ip_if_pings
{
ping -c 1 -W 1 $1 > /dev/null
if [ "$?" = "0" ]; then
iplist="$iplist $1"
echo $iplist
fi
}
# ...
for id in $(seq "$2" "$3"); do
for nr in $(seq 1 244); do
add_ip_if_pings "10.$secondIpOctet.$id.$nr" &
done
done
#waiting for all pings to finish
wait
echo "List: $iplist"
因此,当我打印 in 的值时$iplist
,add_ip_if_pings
它总是包含一个 ip。最后我得到输出:
List:
我想这是某种同步问题,因为多个线程使用相同的变量。这里最好的解决方案是什么?我需要并行ping所有设备,因为我不想永远等待......