-
Sadrazamv4
ig:sadrazam_v4 tg: Sadrazam.spy
🚀 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! 🐚✨
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