Döngüler ve Diğer Kontrol Yöntemleri

Bash programlamanın temellerini anladıktan sonra, döngüler ve yaygın kullanılan kontrol yöntemlerini inceleyebiliriz.

for Döngüsü

for döngüsü, bir listedeki (kelimeler, dosya adları vb.) her öğe için belirli komutları tekrarlamak amacıyla kullanılır.

Örnek 1: Dosyalar Üzerinde Döngü (Globbing ile - Önerilen Yöntem)

Mevcut dizindeki tüm .txt dosyalarını listelemek için:

#!/bin/bash

echo "Bulunan .txt dosyaları:"
# '*' glob karakteri mevcut dizindeki tüm .txt dosyalarıyla eşleşir
# Dosya adlarında boşluk veya özel karakter varsa, tırnak içinde kullanmak önemlidir
for dosya in *.txt; do
    # Dosyanın var olup olmadığını kontrol et (eğer hiç .txt dosyası yoksa glob kendisiyle eşleşir)
    if [[ -f "$dosya" ]]; then 
        echo "İşlenen dosya: $dosya"
    fi
done

Uyarı: for i in $(ls) gibi ls komutunun çıktısını ayrıştırmak, dosya adlarında boşluk veya özel karakterler olduğunda sorunlara yol açar ve kesinlikle önerilmez. Dosyalar üzerinde işlem yapmak için globbing (*, ?, [...]) veya find komutu ile while read döngüsü kullanılmalıdır.

Örnek 2: Sayı Aralığında Döngü

while Döngüsü

while döngüsü, belirli bir koşul doğru (true, çıkış kodu 0) olduğu sürece komutları tekrarlar. Koşul genellikle [[ ... ]] test ifadesiyle kontrol edilir.

Aşağıda 0'dan 9'a kadar sayan basit bir while döngüsü örneği ve modern Bash aritmetik/test sözdizimi gösterilmiştir:

until Döngüsü

until döngüsü, while'ın tersidir; belirtilen koşul yanlış (false, çıkış kodu 0 olmayan) olduğu sürece komutları tekrarlar. Koşul doğru olduğunda döngü sona erer.

case İfadesi

Bir değişkenin değerini birden fazla kalıpla karşılaştırmak için if/elif/else yapısına alternatif olarak case ifadesi kullanılır. Özellikle menü seçenekleri veya komut satırı argümanlarını işlemek için kullanışlıdır.

Aşağıdaki örnekte case kullanımı, echo -n (yeni satır eklemeden yazdırma) ve read -r (kullanıcıdan güvenli girdi okuma) gösterilmektedir:

  • Her kalıp ) ile biter.

  • Her kalıp bloğundaki komutlar ;; ile sonlandırılır.

  • * kalıbı, diğer kalıpların hiçbiriyle eşleşmeyen durumları yakalar (varsayılan durum gibi).

Örnek Çalıştırma:

Last updated