чтение файла построчно в бесконечном цикле до перерыва - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь реализовать скрипт 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, пожалуйста?

Как всегда, заранее благодарю.

1 Ответ

0 голосов
/ 27 апреля 2018

Вам нужны два вложенных цикла: внешний бесконечный цикл и внутренний цикл, который считывает каждую строку из входного файла. 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...