Цикл for
Часть раздела Основы путешествия по Terminal на Coddy — урок 71 из 82.
Иногда вам нужно повторить действие несколько раз. Вместо того чтобы писать одну и ту же команду снова и снова, вы можете использовать цикл for для перебора списка элементов и выполнения действия для каждого из них.
Вот базовая структура цикла for в Bash:
#!/bin/bash
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneЭтот скрипт выводит приветствие для каждого имени в списке. Переменная name последовательно принимает каждое значение: сначала "Alice", затем "Bob", затем "Charlie". Ключевое слово do обозначает начало тела цикла, а done — его конец.
Циклы for особенно мощны при сочетании с подстановочными знаками. Вы можете перебрать все файлы в директории:
#!/bin/bash
for file in *.txt; do
echo "Processing $file"
doneЭто перебирает все файлы .txt в текущей директории. На каждой итерации переменная file содержит текущее имя файла, что позволяет выполнять операции над каждым файлом автоматически.
Вы также можете перебирать диапазон чисел с помощью расширения фигурных скобок:
#!/bin/bash
for i in {1..5}; do
echo "Number: $i"
doneЭто выводит числа от 1 до 5. Циклы for превращают повторяющиеся задачи в всего несколько строк кода, делая ваши скрипты более эффективными и легкими в обслуживании.
Задание
ЛегкоСоздайте shell-скрипт с именем countdown.sh, который использует цикл for для вывода обратного отсчёта от 5 до 1.
Ваш скрипт должен:
- Начинаться со строки shebang (
#!/bin/bash) - Использовать цикл for с расширением фигурных скобок для итерации по числам от 5 до 1
- Выводить каждое число на отдельной строке в формате:
Countdown: [number]
Сделайте скрипт исполняемым и запустите его. Ваш вывод должен быть:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1Подсказка: Используйте
{5..1}для создания убывающего диапазона. Внутри цикла используйтеecho "Countdown: $i", гдеi— ваша переменная цикла.
Шпаргалка
Цикл for позволяет вам итерироваться по списку элементов и выполнять действие для каждого из них.
Базовый синтаксис:
for variable in list; do
# commands
doneЦикл по списку значений:
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneЦикл по файлам с использованием подстановочных знаков:
for file in *.txt; do
echo "Processing $file"
doneЦикл по диапазону чисел с использованием расширения фигурных скобок:
for i in {1..5}; do
echo "Number: $i"
doneДля убывающих диапазонов укажите обратный порядок:
for i in {5..1}; do
echo "Number: $i"
doneПопробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога13Основы скриптинга оболочки
Что такое скрипт оболочкиСоздание и запуск скриптаПеременные в скриптахПользовательский ввод в скриптахОператор ifЦикл forЦикл whileИтог - Угадай число2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данных