Unix / Linux - Циклы в shell: Пособие для начинающих
Здравствуйте, начинающие программисты! Сегодня мы окунемся в захватывающий мир циклов в Unix и Linux. Не волнуйтесь, если вы никогда не писали ни строчки кода раньше - я проведу вас через это шаг за шагом, как я делал это для countless студентов на протяжении многих лет моей преподавательской деятельности. Давайте начнем!
Что такое циклы в shell?
Представьте, что вы на вечеринке и вам нужно поприветствовать каждого гостя. Вместо того чтобы писать отдельное сообщение "Привет" для каждого человека, не было бы ли замечательно просто сказать: "Повторяйте 'Привет' для каждого гостя"? Именно так и работают циклы в программировании - они позволяют нам повторять набор инструкций много раз.
В shell-скриптовании циклы невероятно полезны для автоматизации повторяющихся задач. Они могут сэкономить ваше время и уменьшить вероятность ошибок, которые могут возникнуть, если бы вы повторяли команды вручную.
Типы циклов в shell
В Unix/Linux shell-скриптовании мы в основном работаем с тремя типами циклов:
Тип цикла | Описание | Пример использования |
---|---|---|
for цикл |
Проходит по списку элементов | Когда вы знаете точное количество итераций |
while цикл |
Продолжается до тех пор, пока условие истинно | Когда вы не знаете, сколько итераций потребуется |
until цикл |
Продолжается до тех пор, пока условие не станет истинным | Подобен while , но с обратной логикой |
Давайте рассмотрим каждый из них подробнее.
Цикл 'for'
Цикл 'for' похож на усердного почтальона, который доставляет сообщение в каждый дом на улице. Он проходит по списку элементов и выполняет действие для каждого из них.
Вот базовая синтаксис:
for переменная in список
do
команды
done
Давайте посмотрим на простой пример:
#!/bin/bash
for фрукт in apple banana orange
do
echo "Я люблю $фрукт"
done
Если вы запустите этот скрипт, вы увидите:
Я люблю apple
Я люблю banana
Я люблю orange
В этом примере наш 'почтальон' (цикл) доставляет сообщение "Я люблю" в каждый 'дом' (фрукт) на 'улицу' (наш список фруктов).
Цикл 'while'
Цикл 'while' похож на настойчивого продавца, который продолжает стучать в вашу дверь до тех пор, пока вы не купите их товар. Он продолжает выполнять набор команд до тех пор, пока условие является истинным.
Вот базовая синтаксис:
while [ условие ]
do
команды
done
Давайте рассмотрим пример:
#!/bin/bash
счет=1
while [ $счет -le 5 ]
do
echo "Счет: $счет"
счет=$((счет + 1))
done
Этот скрипт выведет:
Счет: 1
Счет: 2
Счет: 3
Счет: 4
Счет: 5
В этом случае наш 'продавец' (цикл) продолжает 'стучать' (печать счета) до тех пор, пока счет достигает 5.
Цикл 'until'
Цикл 'until' похож на ожидание автобуса. Вы продолжаете ждать, пока автобус arrives. Он продолжает выполнять команды до тех пор, пока условие не станет истинным.
Вот базовая синтаксис:
until [ условие ]
do
команды
done
Давайте посмотрим на пример:
#!/bin/bash
счет=1
until [ $счет -gt 5 ]
do
echo "Счет: $счет"
счет=$((счет + 1))
done
Этот скрипт produzira то же вывод, что и наш пример с while
циклом. Разница заключается в логике: мы продолжаем до тех пор, пока счет больше 5, а не пока он меньше или равен 5.
Вложенные циклы
Точно так же, как вы можете иметь комнату внутри комнаты (представьте себе гардеробную), вы можете также иметь цикл внутри цикла. Это называется вложенными циклами.
Вот пример вложенных for
циклов:
#!/bin/bash
for i in 1 2 3
do
echo "Внешний цикл: $i"
for j in a b c
do
echo " Внутренний цикл: $j"
done
done
Этот скрипт выведет:
Внешний цикл: 1
Внутренний цикл: a
Внутренний цикл: b
Внутренний цикл: c
Внешний цикл: 2
Внутренний цикл: a
Внутренний цикл: b
Внутренний цикл: c
Внешний цикл: 3
Внутренний цикл: a
Внутренний цикл: b
Внутренний цикл: c
Представьте это как многоэтажный дом. Внешний цикл проходит через каждый этаж, а для каждого этажа внутренний цикл проходит через каждую квартиру.
Вложенные while
циклы
Мы также можем вкладывать while
циклы. Вот пример:
#!/bin/bash
i=1
while [ $i -le 3 ]
do
echo "Внешний цикл: $i"
j=1
while [ $j -le 3 ]
do
echo " Внутренний цикл: $j"
j=$((j + 1))
done
i=$((i + 1))
done
Этот скрипт выведет аналогичный вывод нашему примеру с вложенными for
циклами.
Заключение
Поздравления! Вы только что сделали свои первые шаги в мир циклов в shell. Помните, что циклы resemble полезных роботов, которые могут повторять задачи за вас. Цикл 'for' великолепен, когда вы знаете точное количество повторений. Циклы 'while' и 'until' идеальны, когда вы не уверены и вам нужно продолжать до тех пор, пока не будет выполнено условие.
Пока вы продолжаете свое путешествие в программировании, вы найдете циклы неоценимыми инструментами в вашем арсенале кодирования. Они помогут вам автоматизировать повторяющиеся задачи, обрабатывать большие объемы данных и создавать более эффективные и изящные скрипты.
Продолжайте практиковаться, и скоро вы будете loop как профи! Помните, каждый大师 programmer начал exactly где вы находитесь сейчас. Счастливого кодирования!
Credits: Image by storyset