For Loop є невід’ємною частиною будь-якої мови програмування. Це дозволяє програмам перебирати певну кількість елементів.
Наприклад, якщо ви хочете переглянути список або масив із «n» елементів, вам слід використати цикл for. Візьмемо простий приклад:
1Фіолетовий2Індиго3Синій4ЗеленийВеселка Таблиця
Для виконання будь-яких дій або повторення елементів у наведеній вище таблиці нам потрібен цикл For.
Bash для циклу
У сценарії bash синтаксис For Loop виглядає наступним чином:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
Bash For Loop досить простий. Перший рядок #!/bin/bash вказує на те, що код є сценарієм bash. VAR означає тимчасову змінну, яка використовується для циклу. N вказує максимальну кількість ітерацій. ‘do’ і ‘done’ запускають і зупиняють цикл відповідно. Дії — це команди, які виконуються в циклі.
Ми можемо виконувати Bash For Loop з різними змінними, такими як список, рядки, цілі числа та масиви. У цій статті буде показано кілька типових прикладів циклу Bash For.
Ви можете безпосередньо виконувати ці програми в командному рядку bash або зберегти їх у файлі та виконувати файл за допомогою команди Bash filename.sh.
Читання статичного списку
Розглянемо наступний список – rainbowColorList = фіолетовий, індиго, синій, зелений, жовтий, оранжевий, червоний
Ми можемо надрукувати наведений вище список рядків за допомогою циклу Bash For наступним чином:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
Результатом буде список елементів у новому рядку.
#Output Violet Indigo Blue Green Yellow Orange Red
Читання масиву
Синтаксис для оголошення масиву інший. Використовуйте круглі дужки для кожного елемента (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
‘@’ використовується для проходження кожного елемента в масиві.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
Ми також можемо використовувати цикл For для друку індексів і елементів масиву.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Зверніть увагу, що ми використовуємо “!” у циклі, щоб отримати індекс елемента.
Ітерація діапазону чисел
Ми можемо використовувати Bash For Loop для повторення діапазону чисел.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
«..» вказує на діапазон чисел.
#Output 10 9 8 7 6 5 4 3 2 1 0
Ми також можемо пропустити підрахунок чисел, вказавши діапазон.
У наведеному нижче прикладі ми пропускаємо підрахунок на 3.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
Програма, наведена вище, починається з 30 як першого числа та веде зворотний відлік до 0. Останній параметр у циклі for «3» визначає кількість пропусків.
#Output 30 27 24 21 18 15 12 9 6 3 0
Рядки та символи
За допомогою Bash For Loop ми можемо виконувати багато цікавих операцій із рядками.
Наприклад, ми можемо прочитати кожен символ рядка за допомогою оператора «seq» у циклі For:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Зауважте, що «seq» має починатися з 1, щоб першим отримати перший символ.
#Output W e l c o m e
Ми також можемо надрукувати рядки, розділені пробілом один за одним:
#read each word from a sentence mysentence="Welcome to techukraine.net. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to techukraine.net. One stop hub for all techies
Вирази
Подібно до будь-якої іншої мови програмування, наприклад Java, ми можемо розміщувати вирази всередині циклу Bash For.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Читання аргументів командного рядка
Для читання аргументів командного рядка ми використовуємо команду read. У наведеному нижче прикладі ми отримаємо кілька чисел від користувача та надрукуємо суму за допомогою Bash For Loop. Ми використовуємо змінну total для зберігання проміжних і кінцевих підсумків або суми чисел.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
Результат:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Знаходження парних і непарних чисел
Щоб знайти непарні та парні числа від 1 до 10 (або будь-яке число N), ми повинні використовувати умову if разом із Bash for Loop. Щоб визначити парне число, ми ділимо число на 2, і якщо залишок дорівнює 0, тоді класифікуємо його як парне, інакше непарне.
#declare the list where the even and odd numbers will be sorted and kept 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 "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Зауважте, що у наведеному вище прикладі ми надаємо діапазон 10. Ми можемо змінити це число, щоб отримати парні та непарні числа в будь-якому діапазоні. Ви також можете спробувати прочитати номер від користувача за допомогою команди read, про яку ми дізналися в попередньому розділі.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Нескінченний цикл
Нескінченний або нескінченний цикл — це цикл, який не припиняє виконання, і програму потрібно примусово зупинити за допомогою Ctrl+C. Ми можемо легко створити нескінченний цикл за допомогою ‘; ;’ оператор всередині циклу for:
for (( ; ; )) do echo "Welcome to techukraine.net" done
#Output Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net Welcome to techukraine.net ^C $
Інструкція Break
Інструкції break використовуються для виходу з циклу, коли виконується умова if.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
У цьому прикладі ми намагаємося знайти зелений колір. Цикл For проходить через кожен колір, і коли зелений колір знайдено, програма виходить із циклу через оператор break.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Продовжити заяву
Продовжити використовується для пропуску поточного циклу та переходу до наступного на основі певної умови. Наприклад, якщо ви не хочете друкувати колір «Зелений» із нашої попередньої програми, ми можемо поставити «Продовжити», і відображатимуться всі інші кольори, крім зеленого.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Заключні слова
Ми розглянули найпоширеніші використання циклу Bash For Loop, використовуючи рядки, цілі числа, масиви та списки. Якщо ви вивчаєте Linux, але маєте машину з Windows 10, ви можете скористатися функцією WSL і встановити Linux на свою машину з Windows.
Потім ви можете використовувати термінал Linux подібно до CMD.
Далі ви можете перевірити Як запускати сценарії bash за допомогою Python?