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
,else
vəfi
(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 if
və else
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ənGUESS
rəqəmiSECRET
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!
GO TO FULL VERSION