🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-4: Döngüler (`for`, `while`, `until`) ve Akış Kontrolü 🌀

Konu Özeti

Bash betiklemede döngüler ve akış kontrolü ele alınıyor. for döngüsü liste, sayısal aralık ve C tarzı kullanımlarla açıklanıyor; while döngüsü koşul doğru oldukça çalışırken, until döngüsü koşul yanlış oldukça çalışıyor. Dosya okuma, break ve continue komutlarıyla döngü kontrolü örneklerle gösteriliyor. Bir sonraki bölümde fonksiyonlar ve select menü yapısı işlenecek.

🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-4: Döngüler (`for`, `while`, `until`) ve Akış Kontrolü 🌀

Selamlar! Serimizin 4. bölümüne hoş geldiniz.

Önceki bölümde aritmetik işlemleri, karşılaştırma operatörlerini ve `if/else` karar yapılarını incelemiştik. Bu bölümde ise tekrarlayan işleri otomatikleştirmemizi sağlayan ve betiklerimizin omurgasını oluşturan **Döngüler (Loops)** konusunu işleyeceğiz.

Bash'te 3 temel döngü yapısı vardır:
1. **`for` Döngüsü:** Belirli bir liste, aralık veya dizi üzerinde gezinmek için kullanılır.
2. **`while` Döngüsü:** Belirtilen koşul `true` (doğru) olduğu sürece çalışır.
3. **`until` Döngüsü:** Belirtilen koşul `true` olana kadar (yani koşul `false` olduğu sürece) çalışır.

---

📌 1. `for` Döngüsü ve Kullanım Şekilleri 🔄

`for` döngüsü bir eleman listesi üzerinde sırayla işlem yapmak için idealdir.

### A. Liste ve Liste Elemanları Üzerinde Dönme:

#!/bin/bash

for MEYVE in elma armut muz çilek
do
echo "Mevcut Meyve: $MEYVE"
done

### B. Sayısal Aralık (Range) Üzerinde Dönme `{başlangıç..bitiş..adım}`:

#!/bin/bash

# 1'den 5'e kadar sayar
for SAYI in {1..5}
do
echo "Sayı: $SAYI"
done

# 0'dan 20'ye 5'er 5'er artarak sayar
for ADIM in {0..20..5}
do
echo "Adım: $ADIM"
done

### C. C-Style (Klasik C Dili Tarzı) `for` Döngüsü:

#!/bin/bash

for (( i=1; i<=5; i++ ))
do
echo "İndeks: $i"
done

---

📂 2. Dosya ve Klasörler Üzerinde `for` Döngüsü 📁

Sistem yönetiminde dizindeki dosyaları toplu olarak işlemek (örneğin uzantı değiştirmek, yedeklemek) için `for` döngüsü sıkça kullanılır.

#!/bin/bash

# Bulunduğumuz dizindeki tüm .txt dosyalarını döngüye alır
for DOSYA in *.txt
do
# Eğer dizinde hiç .txt yoksa *.txt ifadesini metin olarak almasın diye kontrol ekleriz
if [ -f "$DOSYA" ]; then
echo "İşleniyor: $DOSYA"
# Örnek İşlem: Her txt dosyasının bir yedeğini oluştur
cp "$DOSYA" "${DOSYA}.bak"
fi
done

---

⏳ 3. `while` Döngüsü 🔄

`while` döngüsü verilen koşul doğru (`true`) olduğu sürece parantez içindeki kodları çalıştırmaya devam eder.

#!/bin/bash

SAYAC=1

while [ $SAYAC -le 5 ]
do
echo "Sayaç Değeri: $SAYAC"
((SAYAC++)) # Sayacı 1 artırır
done

---

📄 4. `while` İle Dosyaları Satır Satır Okuma 📖

Bir metin dosyasının içeriğini satır satır okuyup işlemek için `while read` kalıbı kullanılır.

#!/bin/bash

DOSYA="sunucular.txt"

# Eğer dosya yoksa örnek bir dosya oluşturalım
if [ ! -f "$DOSYA" ]; then
echo -e "192.168.1.1\n192.168.1.2\n192.168.1.3" > "$DOSYA"
fi

echo "--- Sunucu Listesi Okunuyor ---"

while read -r SATIR
do
echo "Sunucu IP: $SATIR"
done < "$DOSYA"

---

🛑 5. `until` Döngüsü 🎯

`until` döngüsü `while` döngüsünün tam tersidir. Belirtilen koşul **YANLIŞ (`false`)** olduğu sürece çalışır; koşul **DOĞRU (`true`)** olduğu an döngüden çıkar.

#!/bin/bash

SAYAC=1

# Sayac 5'ten BÜYÜK OLANA KADAR çalışır
until [ $SAYAC -gt 5 ]
do
echo "Until Sayaç: $SAYAC"
((SAYAC++))
done

---

⚡ 6. Döngü Kontrolleri: `break` ve `continue` 🎛️

• `break`: Döngüyü anında sonlandırır ve döngü dışına çıkar.
• `continue`: Döngünün o anki adımını atlar ve bir sonraki adıma geçer.

#!/bin/bash

echo "--- Break ve Continue Testi ---"

for SAYI in {1..10}
do
# 3 sayısını atla (Pas geç)
if [ $SAYI -eq 3 ]; then
echo "Sayı 3 atlandı!"
continue
fi

# 7 sayısına gelince döngüyü tamamen durdur
if [ $SAYI -eq 7 ]; then
echo "Sayı 7 oldu, döngü sonlandırılıyor!"
break
fi

echo "Sayı: $SAYI"
done

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde `for`, `while` ve `until` döngülerini, dosya okuma tekniklerini ve `break`/`continue` akış kontrol komutlarını öğrendik.

👉 Bölüm 5'te Bizi Ne Bekliyor?
• Fonksiyonlar (Functions) ve Parametre Geçirme
• Yerel (Local) ve Küresel (Global) D
eğişkenler
• `select` Menü Yapısı İle İnteraktif Konsol Arayüzleri Oluşturma

Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! 🐚✨

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
135,058Konular
3,297,808Mesajlar
326,250Kullanıcılar
freddywwxxSon Üye
Üst Alt