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.