Цикл For є фундаментальною конструкцією в будь-якій мові програмування. Він надає можливість програмам ітерувати через набір елементів задану кількість разів.
Наприклад, якщо вам потрібно пройтися по списку або масиву, що містить “n” елементів, цикл for буде ідеальним рішенням. Розгляньмо простий приклад:
1 | Фіолетовий |
2 | Індиго |
3 | Синій |
4 | Зелений |
Для виконання операцій або повторення дій над елементами цієї таблиці нам необхідно скористатися циклом For.
Цикл For у Bash
У сценаріях bash, синтаксис циклу For виглядає так:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ДІЯ 1 ДІЯ 2 ..... done
Цикл For у Bash є доволі простим. Рядок #!/bin/bash
вказує, що це bash-скрипт. VAR
– це тимчасова змінна для циклу. N
– максимальна кількість ітерацій. Ключові слова do
та done
позначають початок і кінець циклу відповідно. Дії – це команди, що виконуються в кожній ітерації.
Цикл For в Bash можна використовувати з різними типами даних, такими як списки, рядки, цілі числа та масиви. У цій статті розглянемо декілька типових прикладів застосування циклу Bash For.
Ви можете запускати ці програми безпосередньо в командному рядку bash, або зберегти їх у файлі та запустити за допомогою команди bash filename.sh
.
Зчитування статичного списку
Розглянемо наступний список: rainbowColorList = фіолетовий, індиго, синій, зелений, жовтий, помаранчевий, червоний
.
Ми можемо вивести цей список рядків за допомогою циклу Bash For таким чином:
#!/bin/sh # Оголошення списку rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Розділення за допомогою коми //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
Результатом буде виведення кожного елемента списку на новому рядку.
#Вивід Violet Indigo Blue Green Yellow Orange Red
Зчитування масиву
Синтаксис для оголошення масиву відрізняється. Для кожного елемента (рядка) використовуйте круглі дужки.
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "Мені подобається $colors" done
Символ @
використовується для обходу кожного елемента масиву.
#Вивід Мені подобається Violet Мені подобається Indigo Мені подобається Blue Мені подобається Green Мені подобається Yellow Мені подобається Orange Мені подобається Red
Ми також можемо використовувати цикл For для виведення індексів та елементів масиву.
#Виведення з індексами rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Колір з індексом " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Вивід Колір з індексом 0 : Violet Колір з індексом 1 : Indigo Колір з індексом 2 : Blue Колір з індексом 3 : Green Колір з індексом 4 : Yellow Колір з індексом 5 : Orange Колір з індексом 6 : Red
Зверніть увагу, що ми використовуємо “!” у циклі, щоб отримати індекс елемента.
Ітерація по діапазону чисел
Цикл Bash For можна використовувати для ітерації по діапазону чисел.
#Ітерація по діапазону чисел echo "Зворотній відлік починається..." for N in {10..0} do echo "$N" done
Символи ..
вказують на діапазон чисел.
#Вивід 10 9 8 7 6 5 4 3 2 1 0
Ми також можемо пропустити підрахунок чисел, вказавши крок.
У прикладі нижче ми пропускаємо підрахунок через 3.
#Ітерація з пропусками echo "Зворотній відлік починається..." for N in {30..0..3} do echo "$N" done
Програма починається з числа 30 і веде зворотній відлік до 0. Останній параметр в циклі for “3” визначає крок.
#Вивід 30 27 24 21 18 15 12 9 6 3 0
Рядки та символи
За допомогою циклу Bash For можна виконувати цікаві операції з рядками.
Наприклад, ми можемо прочитати кожен символ рядка, використовуючи оператор seq
у циклі For:
#Читання символів рядка myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Зауважте, що seq
має починатися з 1, щоб першим отримати перший символ.
#Вивід w e l c o m e
Також ми можемо вивести рядки, розділені пробілом, один за одним:
#Читання кожного слова з речення mysentence="Welcome to techukraine.net. One stop hub for all techies" for word in $mysentence; do echo $word done
#Вивід Welcome to techukraine.net. One stop hub for all techies
Вирази
Як і в будь-якій іншій мові програмування, наприклад, Java, ми можемо вставляти вирази в цикл Bash For.
for (( var=10; var>=0; var-- )) do echo "Зворотній відлік...$var" done
#Вивід Зворотній відлік...10 Зворотній відлік...9 Зворотній відлік...8 Зворотній відлік...7 Зворотній відлік...6 Зворотній відлік...5 Зворотній відлік...4 Зворотній відлік...3 Зворотній відлік...2 Зворотній відлік...1 Зворотній відлік...0
Читання аргументів командного рядка
Для читання аргументів командного рядка ми використовуємо команду read
. У наступному прикладі ми отримаємо кілька чисел від користувача та виведемо їх суму за допомогою циклу Bash For. Змінна total
використовується для зберігання проміжних та остаточних сум чисел.
read -a array -p "Введіть числа, які потрібно додати:" total=0 for i in ${array[@]}; do let total+=$i done echo "Сума чисел: $total"
Результат:
#Вивід Введіть числа, які потрібно додати: 3 4 66 Сума чисел: 73
Пошук парних та непарних чисел
Для знаходження парних та непарних чисел від 1 до 10 (або будь-якого числа N) необхідно використовувати умову if
разом із циклом Bash for Loop. Щоб визначити парне число, ми ділимо число на 2, і якщо остача дорівнює 0, класифікуємо його як парне, інакше – як непарне.
#оголошуємо списки для парних і непарних чисел evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Парні числа: "$evennum echo "Непарні числа: "$oddnum
Зауважте, що у наведеному вище прикладі ми задали діапазон 10. Ми можемо змінити це число, щоб отримати парні та непарні числа в будь-якому діапазоні. Ви також можете спробувати прочитати число від користувача за допомогою команди read
, як ми навчилися в попередньому розділі.
#Вивід Парні числа: 2 4 6 8 10 Непарні числа: 1 3 5 7 9
Нескінченний цикл
Нескінченний цикл – це цикл, який не зупиняється, і програму потрібно примусово зупинити за допомогою Ctrl+C. Ми можемо легко створити нескінченний цикл, використовуючи ;;
в циклі for:
for (( ; ; )) do echo "Ласкаво просимо на techukraine.net" done
#Вивід Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net Ласкаво просимо на techukraine.net ^C $
Інструкція Break
Інструкції break
використовуються для виходу з циклу, коли виконується певна умова if.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Шукаю Зелений, поточний колір: $color" done echo "Я знайшов свій колір $color"
У цьому прикладі ми намагаємося знайти зелений колір. Цикл For проходить через кожен колір, і коли зелений колір знайдено, програма виходить з циклу за допомогою інструкції break
.
#Вивід Шукаю Зелений, поточний колір: Violet Шукаю Зелений, поточний колір: Indigo Шукаю Зелений, поточний колір: Blue Я знайшов свій колір Green
Інструкція Continue
Інструкція continue
використовується для пропуску поточної ітерації циклу та переходу до наступної, за певних умов. Наприклад, якщо ми не хочемо виводити колір “Зелений” з попередньої програми, ми можемо поставити continue
, і відобразяться всі кольори, крім зеленого.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Вивід Violet Indigo Blue Yellow Orange Red
Заключні слова
Ми розглянули найбільш поширені варіанти використання циклу Bash For Loop з рядками, цілими числами, масивами та списками. Якщо ви вивчаєте Linux, але маєте комп’ютер з Windows 10, ви можете використовувати функцію WSL і встановити Linux на свій комп’ютер з Windows.
Потім ви можете використовувати термінал Linux так само, як CMD.
Далі ви можете переглянути, як запускати bash-скрипти за допомогою Python?