Linux 在无限循环中逐行读取文件直到中断

Linux 在无限循环中逐行读取文件直到中断,linux,bash,shell,Linux,Bash,Shell,我正在尝试实现一个无限循环bash脚本,用于读取文件、执行某些操作并检查计数器条件,当计数器条件达到0时,它将中断无限循环。我尝试了几次迭代,但没有一次对我有效。伪代码可能是这一行的东西 #!/bin/bash counter=10 while true do read host from file ping -c 1 host > /dev/null if [ $? -eq 0 ] then (($counter+1)) do_something_to_t

我正在尝试实现一个无限循环bash脚本,用于读取文件、执行某些操作并检查计数器条件,当计数器条件达到0时,它将中断无限循环。我尝试了几次迭代,但没有一次对我有效。伪代码可能是这一行的东西

#!/bin/bash
counter=10
while true
do
  read host from file
  ping -c 1 host > /dev/null
  if [ $? -eq 0 ]
  then
    (($counter+1))
    do_something_to_the_host
  else
    (($counter-1))
    if [ $counter -eq 0 ]
    then
      break # this breaks out of the while true infinite loop
    fi
  fi
done
有人能告诉我如何在bash中实现上面的东西吗


一如既往,提前感谢您。

您需要两个嵌套循环:一个外部无限循环和一个内部循环,用于读取输入文件中的每一行
break
接受一个数字参数,以指定要中断多少个循环

counter=10
while true
do
  while read host
  do
    ping -c 1 host > /dev/null
    if [ $? -eq 0 ]
    then
      (($counter+=1))
      do_something_to_the_host
    else
      (($counter-=1))
      if [ $counter -eq 0 ]
      then
        break 2
      fi
    fi
  done < file
done
计数器=10
虽然是真的
做
读主机时
做
ping-c 1主机>/dev/null
如果[$?-等式0]
然后
(($counter+=1))
对主持人做点什么
其他的
(($counter-=1))
if[$计数器-等式0]
然后
突破2
fi
fi
完成<文件
完成

您需要两个嵌套循环:一个外部无限循环和一个内部循环,用于读取输入文件中的每一行
break
接受一个数字参数,以指定要中断多少个循环

counter=10
while true
do
  while read host
  do
    ping -c 1 host > /dev/null
    if [ $? -eq 0 ]
    then
      (($counter+=1))
      do_something_to_the_host
    else
      (($counter-=1))
      if [ $counter -eq 0 ]
      then
        break 2
      fi
    fi
  done < file
done
计数器=10
虽然是真的
做
读主机时
做
ping-c 1主机>/dev/null
如果[$?-等式0]
然后
(($counter+=1))
对主持人做点什么
其他的
(($counter-=1))
if[$计数器-等式0]
然后
突破2
fi
fi
完成<文件
完成

为什么需要无限循环?您的文件是否有无限的主机列表?您是否正在尝试ping主机,如果主机在10次尝试后没有响应,则转到下一个主机?您好,我希望循环是无限的,因为我希望重复读取文件,直到计数器检查条件等于0为止。也许有更好的方法来做我想做的事情,但这是我认为最简单的方法,我可能错了。我愿意接受指导和建议。当您到达文件末尾时会发生什么?我希望循环在文件中不断重复读取,计数器是触发无限循环中断的条件。您可以发布对您不起作用的bash脚本示例吗?柜台的用途是什么?这只是为了摆脱循环吗?是不是为了限制脚本不ping文件中的所有主机?为什么需要无限循环?您的文件是否有无限的主机列表?您是否正在尝试ping主机,如果主机在10次尝试后没有响应,则转到下一个主机?您好,我希望循环是无限的,因为我希望重复读取文件,直到计数器检查条件等于0为止。也许有更好的方法来做我想做的事情,但这是我认为最简单的方法,我可能错了。我愿意接受指导和建议。当您到达文件末尾时会发生什么?我希望循环在文件中不断重复读取,计数器是触发无限循环中断的条件。您可以发布对您不起作用的bash脚本示例吗?柜台的用途是什么?这只是为了摆脱循环吗?这是为了限制脚本不ping文件中的所有主机吗?你没有更改计数器的值Hi Glenn,没有看到你的回复,我最终写了相同的,但我很高兴我现在这样做了,并且能够检查我的脚本和你的脚本。非常感谢。你没有改变counterHi Glenn的值,没有看到你的回复,我最终写了相同的内容,但我很高兴我现在这样做了,并且能够检查我的脚本和你的脚本。非常感谢。