🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-6: Diziler (Arrays) ve Dizi İşlemleri 📊

🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-6: Diziler (Arrays) ve Dizi İşlemleri 📊

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

Önceki bölümde fonksiyonları, `local` değişken mantığını ve `select` yapısıyla interaktif menüler oluşturmayı öğrenmiştik. Bu bölümde ise birden fazla veriyi tek bir değişken altında toplamamızı ve yönetmemizi sağlayan **Dizileri (Arrays)** inceleyeceğiz.

Bash iki tür diziyi destekler:
1. **İndeksli Diziler (Indexed Arrays):** Sayısal indekslerle (0, 1, 2...) erişilen standart diziler.
2. **İlişkisel Diziler (Associative Arrays):** Anahtar-değer (Key-Value) çiftleriyle çalışan diziler (Bash 4.0+ gerektirir).

---

📌 1. İndeksli Dizi Tanımlama ve Elemanlara Erişim 🔢

İndeksli bir dizi oluştururken elemanlar parantez `()` içinde, aralarına **boşluk** konularak yazılır (virgül kullanılmaz).

#!/bin/bash

# Dizi Tanımlama:
MEYVELER=("Elma" "Armut" "Muz" "Çilek")

# 1. Belirli bir indeksteki elemana erişim (0'dan başlar):
echo "İlk eleman: ${MEYVELER[0]}"
echo "İkinci eleman: ${MEYVELER[1]}"

# 2. TÜM elemanları yazdırma (@ veya * kullanılır):
echo "Tüm meyveler: ${MEYVELER[@]}"

# 3. Dizi eleman sayısını (uzunluğunu) alma (# sembolü eklenir):
echo "Toplam meyve sayısı: ${#MEYVELER[@]}"

---

🛠️ 2. Diziye Eleman Ekleme, Güncelleme ve Silme ✏️

Diziler dinamiktir; çalışma zamanında kolayca eleman ekleyebilir veya silebilirsiniz.

#!/bin/bash

SEHIRLER=("Ankara" "İstanbul" "İzmir")

# Eleman Güncelleme:
SEHIRLER[1]="İstanbul (Anadolu)"

# Sona Yeni Eleman Ekleme (`+=` operatörü):
SEHIRLER+=("Bursa" "Antalya")

# Belirli Bir İndeksi Silme (`unset`):
unset SEHIRLER[0] # "Ankara" silindi

echo "Güncel Dizi: ${SEHIRLER[@]}"
echo "Yeni Eleman Sayısı: ${#SEHIRLER[@]}"

---

🔄 3. Dizi Üzerinde Döngü Kurmak 🌀

Dizi elemanlarını tek tek işlemek için `for` döngüsünü kullanırız.

#!/bin/bash

SUNUCULAR=("web-01" "db-01" "cache-01" "mail-01")

echo "--- Sunucu Kontrol Listesi ---"

# Değerler üzerinden dönme:
for SUNUCU in "${SUNUCULAR[@]}"
do
echo "Bağlanılıyor: $SUNUCU.example.com..."
done

echo "------------------------------"

# İndeksler üzerinden dönme (`!dizi[@]` kullanılır):
for i in "${!SUNUCULAR[@]}"
do
echo "İndeks $i -> Sunucu: ${SUNUCULAR[$i]}"
done

---

✂️ 4. Dizi Dilimleme (Slicing) 🍕

Bir dizinin belirli bir aralığını almak için `${dizi[@]:başlangıç:uzunluk}` syntax'ı kullanılır.

#!/bin/bash

SAYILAR=(10 20 30 40 50 60 70 80)

# 2. indeksten başla, 3 tane eleman al:
DILIM="${SAYILAR[@]:2:3}"

echo "Orijinal Dizi: ${SAYILAR[@]}"
echo "Alınan Dilim : $DILIM" # Çıktı: 30 40 50

---

🗺️ 5. İlişkisel Diziler (Associative Arrays - Key/Value) 🔑

Bash 4.0 ile gelen İlişkisel Diziler, indeks yerine metinsel anahtarlar (Key) kullanmamıza imkan tanır (Python'daki Dictionary / JS'deki Object gibi).

⚠️ **Kural:** İlişkisel diziler kullanılmadan önce **`declare -A`** komutu ile açıkça bildirilmek ZORUNDADIR!

#!/bin/bash

# İlişkisel dizi bildirimi:
declare -A KULLANICI

# Anahtar - Değer atama:
KULLANICI[ad]="Ahmet"
KULLANICI[soyad]="Yılmaz"
KULLANICI[rol]="SysAdmin"
KULLANICI[sehir]="Ankara"

# Değer Okuma:
echo "Kullanıcı Adı: ${KULLANICI[ad]}"
echo "Kullanıcı Rolü: ${KULLANICI[rol]}"

# Tüm Anahtarları (Keys) Yazdırma (`!` işareti ile):
echo "Tüm Anahtarlar: ${!KULLANICI[@]}"

# Tüm Değerleri (Values) Yazdırma:
echo "Tüm Değerler: ${KULLANICI[@]}"

# Key/Value Çiftleri Üzerinde Döngü:
for KEY in "${!KULLANICI[@]}"
do
echo "Key: $KEY -> Value: ${KULLANICI[$KEY]}"
done

---

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

Bu bölümde İndeksli ve İlişkisel dizileri, eleman ekleme/silme işlemlerini, dizi dilimlemeyi ve dizi döngülerini detaylarıyla öğrendik.

👉 Bölüm 7'de Bizi Ne Bekliyor?
• Metin İşleme ve Regular Expressions (RegEx)
• `cut`, `awk` ve `sed` Komutları İle Metin Manipülasyonu
• D
osya İçeriğini Dinamik Olarak Değiştirme ve Filtreleme

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.
136,567Threads
3,306,598Messages
328,409Members
gezginist17Latest member
Top Bottom