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/bash23# Basit dizi tanımlama4meyveler=("elma" "armut" "muz" "portakal")56# Tüm elemanları yazdır7echo "${meyveler[@]}"89# Tek bir elemanı erişim (0'dan başlar)10echo "${meyveler[0]}"1112# Dizi uzunluğu13echo "Dizi boyutu: ${#meyveler[@]}"1415# Döngüyle tüm elemanları işle16for meyve in "${meyveler[@]}"; do17echo "- $meyve"18doneBeklenen çıktı:
1elma armut muz portakal2elma3Dizi boyutu: 44- elma5- armut6- muz7- portakalAssociative array'ler daha karmaşık veriler için kullanılır. Örneğin bir kişinin adı, yaşı, şehri gibi bilgileri tutuyor olabilirsin.
1#!/bin/bash23# Associative array tanımlama4declare -A kisi56# Değer atama7kisi[ad]="Ali"8kisi[yas]="28"9kisi[sehir]="Istanbul"10kisi[meslek]="Yazilimci"1112# Belirli bir anahtarı erişim13echo "Ad: ${kisi[ad]}"14echo "Yaş: ${kisi[yas]}"1516# Tüm anahtarları döngüyle işle17echo "\nTüm bilgiler:"18for anahtar in "${!kisi[@]}"; do19echo "$anahtar: ${kisi[$anahtar]}"20doneBeklenen çıktı:
1Ad: Ali2Yaş: 2834Tüm bilgiler:5ad: Ali6yas: 287sehir: Istanbul8meslek: YazilimciSı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.
0 yorum