如何使bash for loop退出?

时间:2015-09-14 18:02:11

标签: linux bash sh

我是bash编程的新手,我想知道如何在执行语句后退出bash循环。

我正在尝试创建一个ping脚本并且它可以工作..但脚本不会退出。假设最后一个主机地址是192.168.42.18 ..之后脚本不会退出。它只是试图迭代。

正如我说Ilm new所以我很抱歉我的noobness xD

我尝试了两种方法,这两种方法在语句执行后最终都没有退出。

方法1

for ((x=42;x<=43;x++))
do
    for ((y=1;y<=20;y++))
    do
        ping -c 1 192.168.$x.$y | grep "bytes from" |cut -d " " -f 4|cut -d":" -f 1 &
    done
done

方法2

#!/bin/bash
for n in {42..43}
do
    for h in {1..100}
    do
        ping -c 1 192.168.$n.$h | grep "bytes from" |cut -d " " -f4 | cut -d ":" -f1 &
    done
done

请详细说明我应该如何继续前进。

2 个答案:

答案 0 :(得分:2)

在循环中启动大量后台进程。它们在循环结束后仍继续运行。

我们可以假设你故意放置&吗?如果您不希望作业在后台运行,请将其取出。

实际上,失败的ping进程应该在几秒钟内完成,可能是一分钟的顶部(取决于ping的版本,有些在你的网络上)。

答案 1 :(得分:1)

C-style for循环需要在bash中使用 double 括号

for ((x=42;x<=43;x++))

这是因为bash需要特殊的算术运算语法。

参考:shouldafor(向下滚动((...))}