CodeGym /Kurslar /Docker SELF /Şərtlər (`if`, `else`) və dövrlər (`for`, `while`) bash-d...

Şərtlər (`if`, `else`) və dövrlər (`for`, `while`) bash-də

Docker SELF
Səviyyə , Dərs
Mövcuddur

Bash-də if, else şərtləri və for, while dövrləri

1. Bash-də şərtlər: if, else və bir az möcüzə

Şərtlər nə üçün lazımdır?

Şərtlər sizin script-lərinizə giriş datalarına, dəyişənlərə və ya hətta əmrlərin icra nəticələrinə əsasən qərar çıxartmağa imkan verir. Məsələn, bir faylın mövcudluğunu yoxlamaq və ya serverin əlçatanlığını dəqiqləşdirmək istəyirsiniz ki, növbəti əməliyyatı yerinə yetirəsiniz. Burada if konstrukiyası kömək edir.

Əsas sintaksis

Budur, Bash-də klassik if şəraitinin necə göründüyü:

if [ şərt ]; then
    # Şərt doğru olduqda bu kod icra edilir
    echo "Şərt yerinə yetirildi!"
else
    # Şərt yanlış olduqda bu kod icra edilir
    echo "Şərt yerinə yetirilmədi!"
fi

Açar sözlər:

  • if, then, elsefi (if blokunu bağlayır) — bunlar vacib sözlərdir. Onlarsız script işləməyəcək.
  • Şərtlərin yoxlanması üçün [ ... ] kvadrat mötərizələrdən istifadə olunur.

Nümunə 1: Faylın mövcudluğunun yoxlanması

#!/bin/bash

FILE="/etc/passwd"

if [ -f $FILE ]; then
    echo "Fayl $FILE mövcuddur."
else
    echo "Fayl $FILE tapılmadı."
fi

İzah:

  • -f faylın mövcudluğunu yoxlayır.
  • Əgər fayl mövcuddursa, echo əmri bu barədə mesaj verir. Əks halda, else bloku icra olunur.

Komandalarla şərtlər

Komandanın icra nəticəsini şərt kimi istifadə edə bilərsiniz, çünki Linux-da hər şey komanda ilə əlaqədardır.

Nümunə 2: Saytın əlçatanlığını yoxlama

#!/bin/bash

if ping -c 1 example.com &> /dev/null; then
    echo "Sayt əlçatandır."
else
    echo "Sayt əlçatan deyil."
fi

İzah:

  • ping -c 1 serverə bir sorğu göndərir. Əgər o cavab verirsə, şərt doğru olur.
  • &> /dev/null komandanın çıxışını gizlədir ki, terminal yüklənməsin.

elif operatorunun istifadəsi

Bəzən yalnız ifelse kifayət etmir. Bir neçə şərti nəzərə almaq lazımdır. Burada elif kömək edir.

Nümunə 3: Günün vaxtını müəyyən etmək

#!/bin/bash

HOUR=$(date +%H)

if [ $HOUR -lt 12 ]; then
    echo "Sabahınız xeyir!"
elif [ $HOUR -lt 18 ]; then
    echo "Günortanız xeyir!"
else
    echo "Axşamınız xeyir!"
fi

İzah:

  • date +%H cari saatı 24-saat formatında qaytarır.
  • Cari vaxtı sabit dəyərlərlə müqayisə edirik: əgər 12-dən az olarsa — səhər, 18-dən az olarsa — günorta, əks halda — axşam.

2. Bash-də dövrlər: təkrarlama — öyrənmənin əsasıdır

Dövrlər skriptinizə müəyyən bir şərt yerinə yetirildiyi müddətcə əməliyyatları təkrarlamağa imkan verir. Bu xüsusilə bir çox faylı emal etmək, tapşırığı bir neçə dəfə təkrarlamaq və ya müəyyən bir hadisəni gözləmək lazım olduqda faydalıdır.

for dövrü

for dəyərlər siyahısından (məsələn, fayllar və ya saylar) keçir və hər biri üçün müəyyən bir əməliyyatı yerinə yetirir.

Nümunə 4: Sadə for dövrü

#!/bin/bash

for i in {1..5}; do
    echo "Bu iterasiya nömrəsi $i"
done

İzah:

  • {1..5} — 1-dən 5-ə qədər olan rəqəmlər siyahısı.
  • Hər iterasiyada i dəyişəni siyahıdan bir dəyər alır.

Nümunə 5: Qovluqdakı faylların siyahısı

#!/bin/bash

for FILE in /etc/*; do
    echo "Fayl emal edilir: $FILE"
done

İzah:

  • /etc/*/etc qovluğundakı bütün faylların siyahısı.
  • Hər iterasiyada FILE dəyişəni bir faylın adını saxlayır.

while dövrü

while şərt yerinə yetirildiyi müddətcə əməliyyatları yerinə yetirir.

Nümunə 6: Rəqəmi təxmin edin

#!/bin/bash

SECRET=5
GUESS=0

while [ $GUESS -ne $SECRET ]; do
    echo "Təxmininizi daxil edin (1-dən 10-a qədər bir rəqəm):"
    read GUESS
done

echo "Siz doğru tapdınız!"

İzah:

  • [ $GUESS -ne $SECRET ] — şərt davam edir, daxil edilən GUESS rəqəmi SECRET rəqəminə bərabər olana qədər.

Dövrləri və şərtləri birləşdiririk

Bəzən şərtlər və dövrlər bir yerdə işləyir.

Nümunə 7: Bir neçə saytın yoxlanılması

#!/bin/bash

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

for SITE in ${SITES[@]}; do
    if ping -c 1 $SITE &> /dev/null; then
        echo "$SITE əlçatandır."
    else
        echo "$SITE əlçatan deyil."
    fi
done

İzah:

  • SITES massivində saytların siyahısı var.
  • for massivdən hər bir sayt üzərindən keçir.
  • if saytı ping vasitəsilə əlçatan olub-olmadığını yoxlayır.

3. Praktik məşğələlər

Domen yoxlanışı

Domen adını arqument kimi qəbul edən və onun əlçatanlığını yoxlayan bir script yazın.

Məsləhət:

if ping -c 1 $1 &> /dev/null; then
    echo "Domen əlçatandır."
else
    echo "Domen əlçatan deyil."
fi

Fayllarla iş

Bir neçə faylın mövcudluğunu yoxlayan və nəticəni hər biri üçün göstərən bir script yazın.

Məsləhət:

FILES=("file1.txt" "file2.txt" "/etc/passwd")
for FILE in ${FILES[@]}; do
    if [ -f $FILE ]; then
        echo "$FILE mövcuddur."
    else
        echo "$FILE tapılmadı."
    fi
done

Vurma cədvəli

1-dən 10-a qədər olan rəqəmlər üçün vurma cədvəlini göstərən iç-içə dövrləri olan bir script yazın.

Məsləhət:

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

İndi siz bash-skriptlərinizə intellekt və məntiq əlavə edə bilərsiniz. Şərtlər vəziyyətləri yoxlamağa və qərarlar verməyə imkan tanıyacaq, dövrlər isə təkrarlanan tapşırıqları avtomatlaşdırmağa kömək edəcək. Qarşınızda tapşırıqların avtomatlaşdırılması üçün daha çox imkanlar var!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION