intranet-diziler

Diziler

 

Diziler benzer türdeki ifadelerin aynı değişken ismi altında numaralandırılarak saklanması için kullanılır. Her indis numarası farklı bir değişken değeri içerir.

DiziAdi[indis]=değer

 

Örnek:

#!/bin/sh
sehirler[1]="Adana"
sehirler[2]="Adıyaman"
sehirler[3]="Afyon"
sehirler[7]="Antalya"
sehirler[34]="Istanbul"

Yukarıdaki örnekte "sehirler" dizisinin 1. elemanı olarak "Adana", 2. elemanı olarak "Afyon", 7. elemanı "Antalya" olarak belirlenmiştir.

 

Tanımladığımız dizileri kullanırken scope içerisine almamız gerekir.

echo ${DiziAdi[ indis ]}

 

Örnek:

#!/bin/sh
notlar[1]=60
notlar[2]=95
echo ${notlar[1]}
echo ${notlar[2]}

 

Dikkat edilmesi gereken hususlar

\   İndis sayı olmak zorundadır. isimler[bir] gibi bir ifade çalışmaz ya da yanlış bir işlem görür.

\   Tanımlanan bir diziyi kullanırken { } kullanmamız gerekir. Örneğin echo ${Ogrenciler[3]}

\   Dizilerde de değişkenlerde olduğu gibi boşluk karakteri kullanılmaz, fakat [ ] içerisinde boşluk olması önemli değildir. isimler[  5  ] ile isimler[5] birbirine eşittir. isimler  [5] ise çalışmaz

 

Dizileri grup halinde tanımlamak

Dizileri tek tek tanımlamak yerine grup halinde de değer atayabiliriz. Bu şekilde değer atadığımızda, indis numaraları 0'dan başlar.

DiziAdı=("birinci değer" "ikinci değer" "üçüncü değer" )

Yukarıdaki tanımlamada DiziAdi[0] değişkeninin değeri “birinci değer”, DiziAdi[1] değişkeninin değeri “ikinci değer”, DiziAdi[2] değişkeninin değeri "üçüncü değer" olarak atanır.

 

Örnek:

#!/bin/sh
aylar=("Ocak" "Şubat" "Mart" "Nisan" "Mayıs" "Haziran" "Temmuz" "Ağustos" "Eylül" "Ekim" "Kasım" "Aralık")
echo "1. ay = ${aylar[ 0 ]}"
echo "5. ay = ${aylar[ 4 ]}"
echo "12. ay = ${aylar[ 11 ]}"

Yukarıdaki komutta ilk değer "0" indisine, ikinci değer "1" indisine atanır.

1. ay = Ocak
5. ay = Mayıs
12. ay = Aralık

 

Dizi boyutunu öğrenmek

Dizide kayıtlı kaç değer olduğunu öğrenmek için aşağıdaki gibi dizi adından önce "#" indis olarak da "@" kullanmamız gerekir.

${#DiziAdı[@]}

 

Örnek:

#!/bin/sh
isimler=(Ali Fırat Berna Ezgi)
isimler[8]="Mehmet"
isimler[15]="Yasemin"
echo "Kayıtlı isim sayısı = ${#isimler[@]} "

Yukarıdaki komut isimler dizisinin kaç elemanı olduğunu gösterecektir.

Kayıtlı isim sayısı = 6

 

Döngü içerisinde dizi kullanımı

Döngü değişkenini dizi indisi olarak kullanarak dizi elemanlarıyla seri işlem yapabiliriz.

Örnek:

#!/bin/sh
renkler=(Beyaz Mavi Kırmızı Sarı Yeşil Gri Mor Siyah Eflatun)
for sayac in {0..8}
do
echo "$sayac. Renk = ${renkler[ $sayac ]} "
done

Yukarıdaki komut "renkler" dizisinin içerisindeki değerleri listeleyecektir.

0. Renk = Beyaz
1. Renk = Mavi
2. Renk = Kırmızı
3. Renk = Sarı
4. Renk = Yeşil
5. Renk = Gri
6. Renk = Mor
7. Renk = Siyah
8. Renk = Eflatun

 

Örnek:

#!/bin/sh
echo "Öğrenci sayısını giriniz. "
read ogrenci_sayisi

for ((sayac1=1;sayac1<=$ogrenci_sayisi;sayac1++)); do
echo "$sayac1. Öğrencinin ismini giriniz. "
read ogrenci_isimleri[$sayac1]
done 

echo
echo "Öğrenci Listesi:"
for ((sayac2=1;sayac2<=$ogrenci_sayisi;sayac2++)); do
echo "$sayac2. Öğrenci = ${
ogrenci_isimleri[$sayac2]} "
done

Yukarıdaki komut girilen öğrenci sayısı kadar öğrenci ismi isteyip, daha sonra girilen isimleri shell ekranına yazdırır.

Öğrenci sayısını giriniz.
3
1. Öğrencinin ismini giriniz.
Erdem Yilmaz
2. Öğrencinin ismini giriniz.
Merve Aydogan
3. Öğrencinin ismini giriniz.
Selin Arslan

Öğrenci Listesi:
1. Öğrenci = Erdem Yilmaz
2. Öğrenci = Merve Aydogan
3. Öğrenci = Selin Arslan