top of page

Yapılandırılmış Komut Kullanımı-4

  • Yazarın fotoğrafı: Huseyin Şahan
    Huseyin Şahan
  • 26 Nis
  • 2 dakikada okunur

Bu blog yazımızda for döngüsünü ele alacağız ve çeşitli kullanımlarını göreceğiz.


FOR DÖNGÜLERİ


Bash betiğinde temel for döngüsü sözdizimi:

for var in liste
do
   komutlar
done

Burada var döngüde listedeki bir değeri alır. liste ise üzerinden geçilecek değerlerdir. listedeki her eleman var olarak değerlendirilir. Komutlar ise her değer için çalıştırılan komutlardır.


Sabit Değerlerle Kullanım

Sabit değerlerle kullanmak için liste yerine doğrudan kelimeleri verin:

for state in Alabama Alaska Arizona
do
  echo "Next state is $state"
done

Değişken Liste İle Kullanım

Değeri doğrudan vermek yerine liste değişkeni ile kullanabilirsiniz:

list="Alabama Alaska Arizona"
for state in $list
do
  echo "Visited $state"
done

Çıktıdan Liste Oluşturma

Cat ile bir dosyanın çıktısını okuyabilir ve bunu liste gibi kullanabilirsiniz:

for state in $(cat states.txt)
do
  echo "Visit $state"
done

Burada önemli bir uyarı yapmak istiyorum. Aşağıdaki örneği inceleyin:

for state in New York

Burada New ve York iki ayrı kelime olarak ele alınacaktır. bunu önlemek için çift tırnak kullanın:

for state in "New York" "North Carolina"

Dizin Çıktısını Kullanma

for file in /home/kullanici/*
do
  if [ -d "$file" ]; then
    echo "$file is a directory"
  elif [ -f "$file" ]; then
    echo "$file is a file"
  fi
done

Burada * joker karakteri tüm dosyaları kapsar.


Birden fazla dizin üzerinde döngü için yine dosya yollarını yan yana boşluk bırakarak verin.


Sizlere bir sorundan bahsetmek istiyorum. Bash normalde bu listeyi boşluk gördüğünde ayırıyor. Yani New ve York iki ayrı kelime olarak ele alınıyordu şimdi aşağıda bir txt dosyamız var ve bunu döngüye sokacağız:

New York
Texas
North Carolina

Bu durumda aşağıdaki gibi bir kod yazabiliriz:

for state in $(cat states.txt)

Ancak bu durumda çıktı şuna benzer oalcaktır:

New
York
Texas
North
Carolina

Ohh, ama bu istediğimiz çıktı değil ki ? Peki burada neler oldu ? Burada bash aslında boşluk karakterini tanıdığı için nerede boşluk göre orayı yeni kelime zannediyor. Ancak bunu değiştirebilir ve bu sorunu çözebiliriz.

Burada IFS dediğimiz yapı yani ayraç değiştirmek için kullanacağımız yapı devreye giriyor. Aşağıdaki kodda IFS'in varsayılan boşluk değerini sakladık yeni IFS değerini \n olarak tanımladık ki bu sayede her satırı yeni kelime olarak alabilecek.

#!/bin/bash

IFS_OLD=$IFS     # eski ayraç karakterlerini sakla
IFS=$'\n'        # sadece satır sonu ayraç olsun

for line in $(cat states.txt)
do
    echo "State: $line"
done

IFS=$IFS_OLD     # eski ayraçları geri yükle

Burada IFS'i önce değiştirdik ve eski haline işimiz bitince geri getirmiş olduk.


Evet bu blog yazımızda Bash betiklerinde for kullanımını görmüş olduk. Sonraki blog yazılarımızı takip edin.




 
 
 

Commenti


bottom of page