Гид по технологиям

Цикл for в Bash: руководство и практические примеры

6 min read Linux Shell Обновлено 21 Nov 2025
Цикл for в Bash — руководство и примеры
Цикл for в Bash — руководство и примеры

Женщина объясняет код мужчине.jpg?w=1600&h=900&fit=crop)

Циклы — фундаментальный инструмент программирования. Они помогают сократить ручную работу и сделать обработку повторяющихся операций предсказуемой и автоматизированной. В Bash цикл for используется для итерации по спискам, диапазонам чисел, результатам команд и массивам.

Что такое цикл for в оболочке

Цикл for в shell — это конструкция для последовательного выполнения набора команд для каждого элемента в списке. Определение в одну строку: цикл последовательно присваивает переменной значение из списка и выполняет блок команд.

Кратко:

  • for — ключевое слово, задаёт цикл;
  • in — ввод списка значений;
  • do … done — блок команд, выполняемых для каждого значения.

Базовая структура

for item in [LIST]

do

  [COMMANDS]

done

Пример более конкретный:

for VARIABLE in 1 2 3 4 5 .. N
do
  command1
  command2
  commandN
done

Список после in может быть статическим (перечислением), генерироваться диапазоном в фигурных скобках, результатом подстановки команды $(…) или элементами массива.

Открытие редактора и запуск скрипта

Откройте терминал и создайте файл скрипта в любом текстовом редакторе. В примерах ниже использован nano.

nano ForLoops.sh

Сохраняйте скрипт с расширением .sh и делайте его исполняемым перед запуском:

chmod +x Forloops.sh
./Forloops.sh

Примеры: вывод целых чисел

Ниже — несколько типичных способов вывода чисел с помощью for.

1. Перечисление значений вручную

#!/usr/bin/bash

for i in 1 2 3

do

    echo "Current # $i"

done

Интерфейс терминала Linux — ввод скрипта

Выход будет выглядеть как последовательные строки с текущим значением переменной i.

Где:

  • i — имя переменной;
  • 1 2 3 — перечисление значений, по которым происходит итерация;
  • do — начало блока команд;
  • echo — вывод;
  • done — конец цикла.

Интерфейс терминала Linux — вывод результата

Сохраните, сделайте исполняемым и запустите как описано выше.

2. Диапазон в фигурных скобках

Альтернативный и компактный способ указать начало и конец диапазона:

for i in {1..3} # a for loop defines a variable and how many iterations you want to make through a loop

do

    echo "Current # $i: Example 2"

done

Интерфейс терминала Linux — пример диапазона

Диапазон {1..3} задаёт последовательность 1, 2, 3.

Интерфейс терминала Linux — вывод диапазона

3. Шаги (increment)

Если нужно пропускать значения, используйте форму {START..END..STEP}:

for i in {1..10..2}

do

    echo "Number = $i"

done

Где 2 — шаг между значениями. Такой цикл выведет 1, 3, 5, 7, 9.

Интерфейс терминала Linux — пример шага

Вывод:

Интерфейс терминала Linux — вывод с шагом

Итерация по строкам и словам

Цикл for не ограничен числами — он отлично работает со строками и списками слов.

1. Перебор простого списка строк

for name in John Jack Mary

do
  echo "My name is $name"

done

Интерфейс терминала Linux — пример со строками

Результат — три строки, по одной на имя.

Интерфейс терминала Linux — вывод списка имён

2. Условный выход из цикла

Чтобы прервать цикл при достижении условия, используйте if + break или continue:

for element in Hydrogen Helium Lithium Beryllium; do

  if [[ "$element" == 'Lithium' ]]; then
    break
  fi

  echo "Element: $element"

done

echo 'All Done!'

Иллюстрация использования условных операторов в Bash

Так как Lithium третий в списке, цикл выведет два элемента и затем завершится с сообщением All Done!.

Интерфейс терминала Linux — вывод после break

Когда использовать for и когда выбирать другие конструкции

Важно понимать, что for хорош для заранее известных списков либо когда легко сгенерировать последовательность. Если нужно ждать события, читать поток построчно или обрабатывать ввод по мере поступления, рассмотрите while read, until или обработку через mapfile/arrays.

Краткие указания:

  • for — перебор статического списка, диапазона, массива или результата команды;
  • while — удобен для чтения построчно (например, из файла или входного потока);
  • for с подстановкой $(command) — перебор слов в выводе команды, но аккуратно с пробелами и разделителями.

Практические рекомендации и безопасность

  • Всегда ставьте shebang #!/usr/bin/env bash или #!/usr/bin/bash в начале скрипта, чтобы указать интерпретатор.
  • Обрабатывайте пробелы и специальные символы: используйте массивы или кавычки вокруг переменных.
  • Для безопасной обработки имён файлов лучше использовать while IFS= read -r line; do … done < file.
  • Проверяйте права на исполнение и запускайте скрипты в тестовом окружении перед использованием в production.

Мини-методология: от идеи до рабочего скрипта

  1. Чётко определите входные данные (список, файл, вывод команды).
  2. Напишите минимальный цикл for с echo для проверки итераций.
  3. Добавьте обработку ошибок и условия остановки (if, break).
  4. Замените echo на реальные команды, повторно протестируйте.
  5. Добавьте логирование и документируйте ожидания.

Чек-лист для роли: разработчик

  • Есть shebang в начале файла
  • Скрипт отмечен как исполняемый (chmod +x)
  • Переменные окружены кавычками при использовании
  • Протестировано на примерах с пробелами и спецсимволами
  • Добавлены комментарии и инструкция по запуску

Чек-лист для роли: ревьюер

  • Проверил обработку ошибок
  • Убедился, что цикл не бесконечен
  • Проверил поведение при пустом списке
  • Убедился в отсутствии утечек информации

Карта решений (Mermaid)

flowchart TD
  A[Есть заранее известный список?] -->|Да| B[Использовать for]
  A -->|Нет| C[Есть поток/файл?]
  C -->|Да| D[Использовать while read]
  C -->|Нет| E[Использовать event-driven/иную логику]
  B --> F{Нужны шаги?}
  F -->|Да| G[Использовать {start..end..step}]
  F -->|Нет| H[Перечислить значения или использовать массив]

Критерии приёмки

  • Скрипт выполняется без ошибок в целевой среде (bash версии >= 4 для расширенных возможностей массивов и некоторых синтаксических конструкций).
  • Поведение при пустом входе документировано и соответствует требованиям (например, ничего не печатать или выдавать предупреждение).
  • Тесты покрывают минимум: один элемент, несколько элементов, элементы с пробелами, и случай с break/continue.

Отладка и тесты

Тестовые случаи:

  • Пустой список — ожидаемый результат: нет итераций.
  • Одна итерация — вывод одной строки.
  • Много итераций — скрипт не должен зависать.
  • Элемент с пробелами — корректная обработка кавычками.
  • Условие break — прерывание цикла в нужный момент.

Простейший способ отладки: добавить set -x в начало скрипта для трассировки выполнения.

Модели зрелости использования циклов

  • Уровень 1 — одинарные ad-hoc скрипты с простыми for по перечислению.
  • Уровень 2 — скрипты с диапазонами, шагами и базовой обработкой ошибок.
  • Уровень 3 — использование массивов, безопасная обработка ввода, тесты и документация.

Краткий словарь терминов (1 строка)

  • for — цикл перебора значений; in — задаёт список; do/done — начало/конец блока; break — досрочное завершение; continue — переход к следующей итерации.

Примеры альтернатив и когда for не подходит

  • Если нужно читать файл построчно с сохранением пробелов — предпочтителен while IFS= read -r.
  • Для сложной обработки с параллельными задачами — рассмотрите xargs -P или GNU parallel.
  • Для работы с большими массивами данных, требующих фильтрации — используйте awk или sed в конвейерной обработке.

Краткое резюме

Цикл for — удобный и гибкий инструмент в Bash. Он прост в синтаксисе и подходит для большинства задач по итерации фиксированных списков и диапазонов. При работе с динамическими потоками или файлами стоит помнить об ограничениях и выбирать другие конструкции, если требуется безопасно сохранять пробелы или обрабатывать большие потоки данных. Следуйте чек-листам и критериям приёмки, чтобы обеспечить надёжность и предсказуемость скриптов.

Важное: тестируйте скрипты в контрольной среде и внимательно обрабатывайте значения с пробелами и спецсимволами.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство