Kabuk Programlamaya Giriş – Bash Kabuk Programlama Karşılaştırma ve Döngü Yapıları

if-elif-else ile Karşılaştırma

Temel kullanım aşağıdaki gibidir. Köşeli parantez (“[” ve “]”) karakterlerinden önce boşluk olmalıdır.

if [ linux komutu ]
then
       komutlar …
elif [ linux komutu ]
then
       komutlar
else    komutlar
fi

İf – elif – else Örnek

0 ile 20 arasında girilen bir sayının çift veya tek olduğunun belirleyen algoritmanın Bash Kabuğu komutları ile kodlayınız. (20 den büyükse uyarı ver.)

echo “0 ile 20 arasinda bir sayi secin”
read sayi
if [ $sayi -lt 10 ]
then
   echo “Secilen sayi tek basamakli”
elif [ $sayi -gt 10 -a $sayi -lt 20 ]
then
   echo “Secilen sayi cift basamakli”
else
   echo “Secilen sayi 20’den büyük” 
fi
Kabuk Programlamaya Giriş - Bash Kabuk Programlama Karşılaştırma ve Döngü Yapıları

case-esac ile Karşılaştırma

if-elif-else yapısındaki gibi karşılaştırma işlemleri gerçekleştirilebilir.

case $Sayi in
   1)
           echo “Bir”   ;;
   2)
           echo “İki”   ;;
   [3-5]*)
           echo “Üç Dört veya Beş”   ;;
   *)  
           echo “Bilinmiyor”   ;;
esac
Kabuk Programlamaya Giriş - Bash Kabuk Programlama Karşılaştırma ve Döngü Yapıları

Case-esac yapısı ile kelimeler için de karşılaştırma gerçekleştirilebilir.

case $Kelime in
Kirmizi)
    echo “Dur…”

Sari)
   echo “Hazir Ol…”

Yesil)
   echo “Geç…”

esac
Kabuk Programlamaya Giriş - Bash Kabuk Programlama Karşılaştırma ve Döngü Yapıları

Döngü Yapıları

for Döngüsü

for döngüsü temel olarak bir kod bloğunu belirli bir sayıda ve üst üste çalıştırmak için kullanılır. for deyimi ve for deyimi kullanılarak oluşturulacak döngü yapısı, işlemlerin tekrar sayısının önceden belli olduğu durumlarda kullanılır.

for degisken1 in deger1 deger2 … degerX
do
    komutlar
done
1)      Döngüler sayıları birer birer arttırmak için kullanılabilir.
Yöntem – 1
for sayac in 1 2 3 4 5 6’
do
     echo 1 192.168.2.$sayac
done
Yöntem – 2for (( sayac=1; sayac <=255; sayac++ ))
Yöntem – 3:   for sayac in {1..255}
2)      for dögüsü döngüde sayıları n’er n’er arttırmak için kullanılabilir.(n=arttırma miktarı)
for sayac in {1..255..n}
3)      for döngüsü ile döngülerde çoklu kontrol yapmak mümkün.
for ((a=1, b=1; a <= $UST_SINIR ; a++, b++))
4)      for döngüsü ile bir dosya içerisinde dolaşılabilir.
for satir in cat $DOSYA
5)      “for” kullanıldığında liste içerisindeki ifadeler yeni satıra göre değil, boşluk karakterine göre ele alınır.
                       cumle=’Ali ata bak’
                       for kelime in $cumle
Not: Eğer satır satır ele alınmak isteniyorsa “while” kullanılmalıdır.

For ile dizi içerisinde dolaşılabilir.
for meyve in “elma” “armut” “portakal” “muz” “cekirdeksiz uzum” “incir”
Sonsuz döngü oluşturulabilir.
for (( ; ; ))
Her dosyanın içerisindeki uygun değer ekrana bastırılabilir.
for dosya in `cat $DOSYALAR`
Not: Döngüden çıkmak için “break” komutu kullanılır. Mevcut iterasyondan çıkıp, sonraki iterasyona devam etmek için ise “continue” komutu kullanılır. 

while Döngüsü

While döngüleri belirli bir şart sağlanana dek devam eder. While döngüsünün Bash Kabuğundaki kullanımı aşağıdaki gibidir.

while [ koşul ]
do
          işlemler
done

Örneğin üst sayaç 10’dan küçük olduğu sürece ekrana sayaç değişkeninin bir sonraki değerini yazdıran programın Bash Kabuğu kod yapısı ile kodlanmış hali aşağıdaki gibidir.


sayac=0
UST_LIMIT=10
while [ “$sayac” -lt “$UST_LIMIT” ]
do
     sayac=$(($sayac + 1))
     echo $sayac
done
while döngüsü ile dosya içerisinde satır satır dolaşılabilir.
cat $Dosya | while read -r satir
do
     echo $satir
done
Not: Dosya içerisindeki ifadeler satır satır ele alınır. boşluk karakterine göre ele alınmak isteniyorsa “for” kullanılmalıdır.
Sonsuz döngü oluşturulabilir.
while [ true ] # Sonsuz döngü
while [ 1 ] # Sonsuz döngü
Döngüyü belirten kısım (yani “while [ ŞART ]” şeklindeki ifadeler) aşağıdaki gibi belli bir değere ulaşana dek de beklenebilir.
while [ “$kelime” != “son” ]
while (( $sayac <= $UST_SINIR ))
Not: Döngüden çıkmak için “break” komutu kullanılır. Mevcut iterasyondan çıkıp, sonraki iterasyona devam etmek için ise “continue” komutu kullanılır.
Share

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir