我想知道为什么这个剧本永远不会结束?
#! /bin/bash
for ip in `seq 200 254`; do
ping -c 1 192.168.0.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
done
但如果我选择不并行运行命令,脚本就会结束。
#! /bin/bash
for ip in `seq 1 254`; do
ping -c 1 192.168.0.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1
done
有人可以解释一下,为什么会发生这种情况?
答案 0 :(得分:2)
你的for循环正在做同样的事情。唯一的区别是,在第一个实例中,您在后台运行所有命令,并且不会看到终止。具体做法是:
ping -c 1 192.168.0.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
^^^
最后使用&
运算符告诉bash后台进程。消除&
会在执行可见的前台运行该进程。