JavaRush /Курси /Docker SELF /Умови (`if`, `else`) та цикли (`for`, `while`) у bash

Умови (`if`, `else`) та цикли (`for`, `while`) у bash

Docker SELF
Рівень 3 , Лекція 4
Відкрита

1. Умови в bash: if, else, і трохи магії

Для чого потрібні умови?

Умови дозволяють вашому скрипту приймати рішення, ґрунтуючись на вхідних даних, змінних або навіть результатах виконання команд. Наприклад, ви хочете перевірити, чи існує файл, або переконатися, що сервер доступний, щоб виконати наступну дію. Ось тут і стає в пригоді конструкція if.

Основний синтаксис

Ось як виглядає класична умова if в bash:

if [ умова ]; then
    # Тут виконується код, якщо умова істинна
    echo "Умова виконана!"
else
    # Тут виконується код, якщо умова хибна
    echo "Умова не виконана!"
fi

Ключові слова:

  • if, then, else, і fi (закриваючий блок if) — це магічні слова. Без них скрипт працювати не буде.
  • Квадратні дужки [ ... ] використовуються для перевірки умов.

Приклад 1: Перевірка існування файлу

#!/bin/bash

FILE="/etc/passwd"

if [ -f $FILE ]; then
    echo "Файл $FILE існує."
else
    echo "Файл $FILE не знайдено."
fi

Пояснення:

  • -f перевіряє, чи існує файл.
  • Якщо файл існує, команда echo виводить повідомлення про це. Якщо ні, виконується блок else.

Умови з командами

Ви можете використовувати результат виконання команди як умову, адже в Linux все — це команда.

Приклад 2: Перевірка доступності сайту

#!/bin/bash

if ping -c 1 example.com &> /dev/null; then
    echo "Сайт доступний."
else
    echo "Сайт недоступний."
fi

Пояснення:

  • ping -c 1 надсилає один запит до сервера. Якщо він відповідає, умова стає істинною.
  • &> /dev/null приховує вивід команди, щоб не засмічувати термінал.

Використання оператора elif

Іноді недостатньо просто if і else. Потрібно врахувати кілька умов. Тут стає в пригоді elif.

Приклад 3: Визначення часу доби

#!/bin/bash

HOUR=$(date +%H)

if [ $HOUR -lt 12 ]; then
    echo "Доброго ранку!"
elif [ $HOUR -lt 18 ]; then
    echo "Добрий день!"
else
    echo "Добрий вечір!"
fi

Пояснення:

  • date +%H повертає поточну годину у 24-годинному форматі.
  • Ми порівнюємо поточний час з фіксованими значеннями: якщо менше 12 — ранок, менше 18 — день, інакше — вечір.

2. Цикли у bash: повторення — мати навчання

Цикли — це спосіб змусити твій скрипт повторювати дії, поки виконується певна умова. Це особливо корисно, якщо треба обробити багато файлів, повторити задачу кілька разів або чекати певної події.

Цикл for

for проходить по списку значень (наприклад, файли чи числа) і виконує вказану дію для кожного з них.

Приклад 4: Простий цикл for

#!/bin/bash

for i in {1..5}; do
    echo "Це ітерація номер $i"
done

Пояснення:

  • {1..5} — список чисел від 1 до 5.
  • На кожній ітерації змінна i приймає значення зі списку.

Приклад 5: Перебір файлів у директорії

#!/bin/bash

for FILE in /etc/*; do
    echo "Обробляється файл: $FILE"
done

Пояснення:

  • /etc/* — це список усіх файлів у папці /etc.
  • На кожній ітерації змінна FILE містить ім'я одного файлу.

Цикл while

while виконує дії, поки виконується умова.

Приклад 6: Вгадай число

#!/bin/bash

SECRET=5
GUESS=0

while [ $GUESS -ne $SECRET ]; do
    echo "Введіть вашу здогадку (число від 1 до 10):"
    read GUESS
done

echo "Ви вгадали!"

Пояснення:

  • [ $GUESS -ne $SECRET ] — умова продовжується, поки введене число GUESS не дорівнює секретному SECRET.

Комбінуємо цикли та умови

Іноді умови та цикли працюють разом.

Приклад 7: Перевірка кількох сайтів

#!/bin/bash

SITES=("example.com" "google.com" "nonexistent.website")

for SITE in ${SITES[@]}; do
    if ping -c 1 $SITE &> /dev/null; then
        echo "$SITE доступний."
    else
        echo "$SITE недоступний."
    fi
done

Пояснення:

  • Масив SITES містить список сайтів.
  • for проходить по кожному сайту з масиву.
  • if перевіряє доступність сайту за допомогою ping.

3. Практичні вправи

Перевірка домену

Напишіть скрипт, який приймає доменне ім'я як аргумент і перевіряє його доступність.

Підказка:

if ping -c 1 $1 &> /dev/null; then
    echo "Домен доступний."
else
    echo "Домен недоступний."
fi

Робота з файлами

Напишіть скрипт, який перевіряє існування кількох файлів і виводить результат для кожного з них.

Підказка:

FILES=("file1.txt" "file2.txt" "/etc/passwd")
for FILE in ${FILES[@]}; do
    if [ -f $FILE ]; then
        echo "$FILE існує."
    else
        echo "$FILE не знайдено."
    fi
done

Таблиця множення

Напишіть скрипт із вкладеними циклами, який виводить таблицю множення для чисел від 1 до 10.

Підказка:

for i in {1..10}; do
    for j in {1..10}; do
        echo -n "$((i * j)) "
    done
    echo ""
done

Тепер ви можете додавати інтелект і логіку вашим bash-скриптам. Умови дозволять вам перевіряти стани та приймати рішення, а цикли допоможуть автоматизувати повторювані завдання. Попереду вас чекає ще більше можливостей для автоматизації завдань!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ