Ana içeriğe geç

Shell Script Dizi: Bash’te Arrays ile Veri Yönetimi Rehberi

Shell betiklerinde çok veriyle çalışıyorsanız tek tek değişkenlerle uğraşmak yorar.
Bu rehberde diziler (arrays) ile veriyi toplu yönetmeyi öğreneceksiniz.


Bu Rehberde Ne Öğreneceksiniz?

  • Dizilerin değişkenlerden farkını
  • Indexed ve associative dizi türlerini
  • Eleman ekleme ve okuma yöntemlerini
  • Döngülerle dizi gezmeyi
  • Sayma ve silme gibi temel işlemleri

Dizi (Array) Nedir?

Değişkenler tek değer saklar.
Diziler aynı isim altında birden fazla değer tutar.

Büyük listelerde diziler daha pratiktir.
Log, sunucu listesi, dosya listesi gibi işlerde hayat kurtarır.


1. Shell Script’te Dizi Türleri

Shell betiklerinde iki ana dizi tipi vardır:

  1. İndisli Diziler (Indexed Arrays)
    Elemanlar 0’dan başlayan sayılarla tutulur.
  2. İlişkisel Diziler (Associative Arrays)
    Elemanlar anahtar–değer şeklinde tutulur.

2. Dizi Tanımlama (declare)

declare -a indisli_dizi
declare -A iliskisel_dizi
  • Bu komutlar diziyi açıkça tanımlar.
  1. Büyük A ilişkisel içindir.
  2. Küçük a indisli içindir.

3. Dizi Elemanı Ekleme ve Okuma

İlişkisel diziye eleman ekleme


iliskisel_dizi[anahtar1]="Merhaba Dünya"
echo ${iliskisel_dizi[anahtar1]}
  • Bu komut anahtar ile değer ekler ve yazdırır.

İndisli dizi oluşturma


sayi_dizisi=(10 20 30 40 50)
echo ${sayi_dizisi[0]}
  • Bu komut diziyi oluşturur ve ilk elemanı yazdırır.

4. Diziyi Döngüyle Okuma


#!/bin/bash
sunucular=(tr1-node01 tr1-node02 tr1-node03)

for sunucu in ${sunucular[@]}
do
echo "Sunucu Adı: $sunucu"
done
  • Bu betik dizi elemanlarını sırayla işler.

İpucu: Boşluklu değerler için ekteki sunucular tagı daha güvenlidir.


5. Yerleşik Dizi İşlemleri

  1. Tüm elemanları alma

echo ${sunucular[@]}
  • Bu komut dizideki tüm elemanları yazdırır.

  1. Eleman sayısını bulma

echo ${#sunucular[@]}
  • Bu komut dizide kaç eleman olduğunu gösterir.

  1. Tek bir elemanı silme

unset sunucular[1]
  • Bu komut belirtilen indisteki elemanı siler.

  1. Diziyi tamamen temizleme

unset sunucular
  • Bu komut diziyi komple kaldırır.

Sıkça Sorulan Sorular (SSS)

1. Shell dizilerinde sayı ve metin aynı anda tutulur mu? Evet. Aynı dizide sayı ve metin karışık tutulabilir.

2. @ ve * farkı nedir? İkisi de tüm elemanları temsil eder. Çift tırnakta "dizi" tagı daha güvenlidir.

3. Döngüde neden [] kullanıyoruz? Çünkü tüm elemanları tek tek dolaşmanızı sağlar. Bu kullanım en yaygın yöntemdir.

4. Associative array ne zaman mantıklı olur? Ayar, etiket, isim–değer gibi eşleştirmelerde mantıklıdır. Örnek: kullanici_rol[]="admin" gibi.


Sonuç

Shell script dizileri otomasyonu hızlandırır. Veriyi daha düzenli ve okunur yönetmenizi sağlar.

Betiklerinizi yüksek performanslı Linux sunucularda çalıştırmak için Rabisu Bulut altyapısında hemen deneyebilirsiniz.