Birçok programlama dilinde bulunan bu döngü çeşidinin birkaç farklı kullanımı vardır; sırayla göreceğiz. for için iskeletimiz genel anlamda aşağıdaki gibidir.
for
do
...
done

İlk önce 'for' anahtar kelimemizi veriyoruz. Daha sonra herhangi bir değişken ismi (variable) veriyoruz. Bunu yaptıktan hemen sonra 'in' anahtar kelimesini veriyoruz ve değerlerimiz ne ise onu veriyoruz. Ben, sayıları koydum ancak siz metinsel ifade de koyabilirsiniz.

Bu kullanım aslında 'variable=1 2 3 4 5 6' şeklinde bir kullanım yapmakla benzerdir. Ancak bu gösterimde verdiğimiz değişken, in anahtar kelimesinin yanındaki tüm değerler için 'do' altındaki işlemleri yapıyor. Aşağıdaki görsel yardımcı olacaktır.

Burada verdiğimiz değişkenin (variable) değeri ilk önce '1' oluyor ve echo yardımıyla bu değer ekrana yazdırılıyor. Daha sonra $variable, '2' oluyor ve yine ekrana yazdırılıyor. Bu, 6'ya kadar gidiyor ve her seferinde ekrana yazdırılıyor. 'for'un temel anlamda çalışma mantığı budur.
İlk kullanımda 30'a kadar olan sayıları yazdıracağımızı düşünürsek bu durumda
'for variable in 1 2 3 4 5 6 7...' şeklinde mi yazacağız? Hayır.
Bu kısım için ilk önce Bash versiyonunuzu öğrenmenizi istiyorum. Eğer Bash versiyonunuz 4'ün altındaysa bu kullanımı gerçekleştiremezsiniz. Versiyonu, sistem değişkenlerinden de hatırlayacağınız üzere aşağıdaki gibi buluyoruz: "echo $BASH_VERSION"

Şimdi kullanımımızı görelim.

Her şey aynı sadece in anahtar kelimesinin yanında değişiklik var. Bu noktada bir çift süslü parantez ( {} ) açıp içerisine bir aralık (range) veriyoruz. Verdiğimiz bu aralığın ortasına da herhangi bir boşluk kullanmadan iki adet nokta '..' koyuyoruz.
(( x=x+1 )) kullanımını hatırlarsınız. Bunu yani atlama sayısını belirlemek bu kullanımda oldukça basittir.

Bunu yaparken biraz önceki {1..10} ifadesine atlama değerini de ekliyoruz. Bunun için; ' {1..10..2} ' şeklinde bir kullanım yaptık. Kaçar kaçar atlamasını istiyorsanız en son kısma o değeri girmeniz gerekir.

Matematiksel işlemlerde (( )) ifadesini kullandığımız gibi burada da bir matematik söz konusu olduğundan aynı ifadeyi kullanıyoruz. Buradaki 'i', bir değişkendir yani buna istediğiniz ismi verebilirsiniz. Bu kullanımı yaparken ilk önce bir değişen ataması yapıyoruz, daha sonra o değişkene değerini verip noktalı virgül ';' koyuyoruz. Bu noktalı virgülü; ifadenin, diğer ifadelerle karışmasını önlemek ve Bash'e kolaylık sağlamak için kullanıyoruz.
Bunu yaptıktan sonra bir sonraki ifademiz, koşul ifadesi olacaktır. Biraz önce tanımladığımız değişken ile alakalı bir koşul sağlamak zorundayız. Bu koşuldan sonra da bir adet noktalı virgül koyuyoruz.
Son olarak; sonsuz döngüyü engellemek adına tanımladığımız değişkeni artırıyoruz. Dilerseniz bunu ikişer ikişer veya daha fazla olacak şekilde de arttırabilirsiniz. Örnek:

Bununla beraber; i'nin bir değişken olduğunu ve bu değişkenin bir değerinin olduğunu belirtmiştik. Aşağıdaki 'echo $i', i'nin değerlerini yazdırmaya olanak tanıyor; biliyorsunuz.
Burada sonsuz döngü oluşturma şansınız vardır.

Eğer hiçbir koşul vermezseniz (( ; ; )) bu, sonsuz döngü olacaktır.
Bu kullanım sayesinde bildiğiniz Shell komutlarını (ls, pwd vesaire) çalıştırabiliyoruz. Hemen bakalım.

Her zamanki gibi for kalıbımızı yazıyoruz ancak en son kısma '$(ls)' şeklinde bir komut veriyoruz. İsterseniz çalıştırıp bakalım.

Bu şekilde, şu an bulunduğumuz dizindeki klasör ve dosyaları görebildik. İsterseniz oraya daha fazla komut verebilirsiniz:

ls komutunun alternatifi olarak '*' yani yıldız veya asterix operatörünü de verebilirsiniz. Bu operatör, daha önce de belirttiğim gibi 'all' anlamına gelir ve size, o an hangi dizindeyseniz oradaki dosya ve klasörleri verecektir.

Burada biraz daha heyecan katmak istersek belli bir dosyayı arayabilir, eğer varsa kendisi üzerinde işlemler yapabiliriz:

Hatta isterseniz deneme.txt yerine, bu bilgiyi kullanıcıdan alabilirsiniz:

Burada, 'cat' ile dosya okumayı göreceğiz. İlk önce deneme.txt isimli dosyamıza basit bir cümle yerleştirelim.

Şimdi, işlemlerimize geçelim fakat buradaki syntax yapısına dikkat edelim.

$(cat deneme.txt) şeklinde bir ifade verdikten sonra hemen yanına bir adet noktalı virgül koyuyoruz ve 'do' anahtar kelimesini de yanına yerleştirip aşağı iniyoruz. Gerisi, bildiğiniz şeyler.
Çıktıya dikkat ettiğinizde cümlenin kelime kelime ayrıldığını görürsünüz. Bunun literatürdeki adı, 'separate' ya da 'split' şeklindedir. Bu işlemde her bir boşluktan sonra (space) ayırma işlemi gerçekleştirilir.
Bu noktada noktalı virgülü silip 'do' anahtar kelimesini aşağı alabilirsiniz elbette. Ancak bunun bu şekilde kullanımı daha yaygındır ve bir yerde görürseniz yabancılık çekmeyin diye gösterdim.
Yayınlanma Tarihi: 2022-09-17 15:10:27
Son Düzenleme Tarihi: 2022-09-19 20:50:59