Bash'ta Dizi ve Associative Array: Veri Yapıları ile Pratik Kod

Bash'ta veri tutmanın en yaygın yolu dizilerdir. Basit diziler sıralı değerleri saklar; associative array'ler ise anahtar-değer çiftleriyle çalışır. İkisini de doğru yerde kullanmak betiklerin okunabilirliğini ve hızını arttırır.

Basit bir dizi oluşturmak için parantez içine değerleri virgülle ayırarak yazarsın.

1#!/bin/bash
2
3# Basit dizi tanımlama
4meyveler=("elma" "armut" "muz" "portakal")
5
6# Tüm elemanları yazdır
7echo "${meyveler[@]}"
8
9# Tek bir elemanı erişim (0'dan başlar)
10echo "${meyveler[0]}"
11
12# Dizi uzunluğu
13echo "Dizi boyutu: ${#meyveler[@]}"
14
15# Döngüyle tüm elemanları işle
16for meyve in "${meyveler[@]}"; do
17echo "- $meyve"
18done

Beklenen çıktı:

1elma armut muz portakal
2elma
3Dizi boyutu: 4
4- elma
5- armut
6- muz
7- portakal

Associative array'ler daha karmaşık veriler için kullanılır. Örneğin bir kişinin adı, yaşı, şehri gibi bilgileri tutuyor olabilirsin.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1#!/bin/bash
2
3# Associative array tanımlama
4declare -A kisi
5
6# Değer atama
7kisi[ad]="Ali"
8kisi[yas]="28"
9kisi[sehir]="Istanbul"
10kisi[meslek]="Yazilimci"
11
12# Belirli bir anahtarı erişim
13echo "Ad: ${kisi[ad]}"
14echo "Yaş: ${kisi[yas]}"
15
16# Tüm anahtarları döngüyle işle
17echo "\nTüm bilgiler:"
18for anahtar in "${!kisi[@]}"; do
19echo "$anahtar: ${kisi[$anahtar]}"
20done

Beklenen çıktı:

1Ad: Ali
2Yaş: 28
3
4Tüm bilgiler:
5ad: Ali
6yas: 28
7sehir: Istanbul
8meslek: Yazilimci

Sık yapılan hata: Basit dizilerde declare -a yazılmaz, ama associative array'ler için declare -A şarttır. Aksi halde anahtarları tanıyamaz. Ayrıca ${array[@]} ve ${!array[@]} arasındaki fark önemlidir; birincisi değerleri, ikincisi anahtarları verir.

Dizi elemanı ekleme veya silme işlemleri için += operatörü ya da doğrudan indeks atamas kullanılır. Basit dizilerde sıralı indeks tutmak gerekir; associative array'lerde bu sorun yoktur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz