我写了一个简单的基于 ping 的 IP 扫描器(见下文),但它有一个问题。
#!/bin/bash
counter = 0
for ip in 192.168.44.{1..254}; do
ping -c 1 -W 1 $ip | grep "64 bytes" &
let counter++
if [[ "$counter" -eq 254 ]];
then
exit 0;
fi
done
首先,for 循环似乎正在启动多个线程,并且终端的唯一输出是 ping 答案。但是,当脚本完成对网络中所有机器的 ping 操作后,它永远不会退出,如下图所示:
我必须按下Enter才能最终结束它。
我也尝试exit 0在声明之后放置一个done,但它仍然不起作用。当 for 循环结束时,如何使脚本退出?
注意:我发现此实现是在 LAN 中查找现有机器的最快速度,但如果有人建议更合适的代码,我将不胜感激。
