Как управлять циклом?

Допустим, у нас есть «for loop», как показано ниже:

#!/bin/bash for i in $(cat test_file); do echo $i done 

Содержимое текстового файла – это имена папок в родительской папке

Если text_file содержит 10000 записей (например, переменная i), как я могу сказать «за цикл» спать 10 секунд между каждыми 10 «эхо». Другими словами, если for loop считывает переменную i в текстовом файле, как я могу контролировать количество переменных, которые цикл может выполняться каждый определенный период времени? Таким образом, результат следующий:

  Variable #1 Variable #2 Variable #3 . . . . sleep 10 Variable #11 Variable #12 Variable #13 . . . 

2 Solutions collect form web for “Как управлять циклом?”

Используйте следующий сценарий bash ( чтобы спать 10 секунд между каждыми 10 эхами ):

test.sh – это тестовое имя скрипта

 #!/bin/bash while ((++i)); read -r line do echo "$line" if (( "$i" % 10 == 0)) then sleep 10 fi done < $1 

Использование :

 bash test.sh test_file 

while ((++i)) – будет увеличивать счетчик i каждый раз, когда read -r line возвращает строку с входа

if (( "$i" % 10 == 0)) – проверяет, делится ли текущий номер строки на 10 (означает, что поток выполнения достигает следующих 10 строк)

sleep 10 – приостанавливает скрипт на 10 секунд

 xargs -L 10 sh -c 'printf "%s\n" "$@"; sleep 10' sh < test_file 

За работой

  • xargs с -L будет принимать 10 строк за один проход и передать их команде sh -c . Там первый аргумент используется как имя программы, мы поместим фиктивное имя sh . Затем эти 10 строк будут доступны для sh как «$ @», и мы можем делать все, что захотим. Здесь мы просто печатаем их. Затем мы sleep течение 10 секунд. После этого xargs передадут следующие 10 траншей, и этот цикл повторяется, пока не закончится ложь в test_file.
  • Проблема с синтаксисом bash в командной строке
  • bash: получить последний stdout
  • Переменные изменения определения в Bash
  • Как вы помните последний (n-й?) Переданный аргумент предыдущей команды, которую вы использовали с bash?
  • Внедрение отката в bash
  • Шаблон имени файла для файлов, которые еще не существуют
  • Удаление многоразовых расширений в хроме
  • В оболочке bash, как вставить предыдущую строку внутри текущей строки?
  • простой bash while loop создает нежелательный файл с именем 0
  • Почему `` `буквально не обрабатывается шаблоном?
  • выход из петли infinte
  • Linux и Unix - лучшая ОС в мире.