Bash tek boyutlu dizi değişkenleri sağlar. Her değişken dizi olarak
kullanılabilir;
declare yerleşiği bir diziyi
doğrudan bildirecektir. Bir dizi için ne bir azami boyut vardır ne de
üyelerinin indislenmesi ya da peşpeşe atanması gereklidir. Dizilerin
ilk indisi sıfırdır.
Bir değişken aşağıdaki sözdizimi kullanılarak atanırsa, bir dizi otomatikman
oluşturulmuş olur:
indis değerlendirildiğinde sıfıra eşit ya da
büyük bir sayı olması gereken bir aritmetik ifade olarak ele alınır.
Bir dizi doğrudan aşağıdaki gibi bildirilebilir:
Ayrıca bu söz dizimi de kabul edilir:
indis yoksayılır. Bir dizi değişkeni için
öznitelikler
declare ve
readonly yerleşikleri ile belirtilebilir. Her
öznitelik dizinin tüm üyelerine uygulanır.
Diziler aşağıdaki gibi birleşik atamalar kullanılarak atanabilir.
Burada her değer,
[[indis]=]dizge
biçemindedir. İsteğe bağlı olan indis verilirse,
indis atanmış olur; aksi takdirde atanan elemanın indisi deyim tarafından
atanan son indis artı birdir. İndisleme sıfırdan başlar. Bu sözdizimi
ayrıca declare yerleşiği tarafından da kabul edilir.
Tek tek dizi elemanları
isim[indis]=değer
sözdizimi kullanılarak atanabilir.
Dizideki her eleman ${isim[indis]}
biçeminde bir ifade içinde kullanılabilir. Kaşlı ayraçlar, kabuğun
dosyaismi yorumlama işleci ile çelişmemesi için gereklidir.
indis olarak @ veya
* verilirse, dizinin tüm üyeleri anlamındadır.
Bu indisler sadece çift tırnak içine alındığında farklıdır. Sözcük çift
tırnaklar arasındaysa, ${isim[*]} sözcüğü,
her dizi üyesi IFS değişkeninin ilk karakteri ile
ayrılarak tek sözcük olarak yorumlanır. ${isim[@]}
sözcüğünde ise dizinin her elemanı ayrı bir sözcük olarak yorumlanır.
Dizinin hiç elemanı yoksa, ${isim[@]} hiçbir şey
olarak yorumlanır.
Bir sözcük içinde çift tırnaklı yorumlama olursa ilk parametrenin yorumu özgün sözcüğün başlangıç parçası ile birleşir ve son parametrenin yorumu da özgün sözcüğün son parçası ile birleşir.
Bu, @ ve * özel parametrelerinin yorumlanmasına benzerdir.
${#isim[indis]},
${isim[indis]} dizisinin uzunluğu
olarak yorumlanır. indis, @
veya * ise yorumlama dizideki elemanların sayısıdır.
Bir dizi değişkeni bir ifade içinde kullanılırken bir indis belirtilmezse
sıfırıncı elemana karşılıktır.
Dizileri kaldırmak için
unset
yerleşiği kullanılır.
unset isim[indis]
komutu
indis indisli elemanı diziden kaldırır. Dosyaismi üretiminin sebep olacağı istenmeyen yan etkilerden kaçınılmaya çalışılmalıdır.
unset isim komutunda
isim bir dizi ismi ise dizinin tamamı kaldırılır.
Ayrıca
indis olarak
* veya
@ verildiğinde de dizinin tamamı kaldırılır.
declare,
local ve
readonly
yerleşiklerinin herbirinde bir dizi belirtmek
için
-a seçeneği bulunur.
read
yerleşiğinin
-a seçeneği ile standart girdiden okunan
sözcüklerin bir listesi bir diziye atanabilir ve değerler standart girdiden
okunup tek tek dizi elemanlarına atanabilir.
set ve
declare
yerleşikleri girdi olarak yeniden kullanılabilir şekilde dizi değerlerini
gösterebilir.