10 прикладів циклу Bash For із поясненнями

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

Зверніть увагу, що ми використовуємо “!” у циклі, щоб отримати індекс елемента.

  7 найкращих неперетворених хостингів серверів для всіх

Ітерація діапазону чисел

Ми можемо використовувати 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.

  Як знайти текст на веб-сторінці в Safari на iPhone та iPad

Потім ви можете використовувати термінал Linux подібно до CMD.

Далі ви можете перевірити Як запускати сценарії bash за допомогою Python?