Materi
Variabel biasa menyimpan satu teks. Daftar nama yang ditulis dalam satu teks, misalnya CABANG="Medan Kota Baru Solo", tidak bisa dipecah kembali dengan benar karena batas antarnamanya hilang. Array menyimpan setiap elemen terpisah: CABANG=(Medan "Kota Baru" Solo). Indeksnya mulai dari 0, jadi ${CABANG[1]} berisi Kota Baru, dan ${CABANG[-1]} elemen terakhir.
CABANG=(Medan "Kota Baru" Solo)
CABANG+=(Makassar)
echo "${#CABANG[@]} cabang"
for c in "${CABANG[@]}"; do
mkdir -p "laporan/$c"
done"${CABANG[@]}" dengan kutip ganda menghasilkan satu kata per elemen, persis seperti "$@" untuk argumen. ${#CABANG[@]} berisi jumlah elemen, ${!CABANG[@]} daftar indeksnya, dan CABANG+=(Makassar) menambah elemen di belakang. CABANG[1]=Binjai mengganti satu elemen.
Array bisa diisi dari pola berkas, BERKAS=(data/*.csv), atau sedikit demi sedikit di dalam perulangan dengan ISI+=("$f"). Sesudah itu, ${#BERKAS[@]} menjawab pertanyaan berapa berkas yang ditemukan tanpa perlu ls | wc -l.
Kesalahan umum: menulis $CABANG tanpa indeks, yang hanya menghasilkan elemen pertama; menulis ${CABANG[@]} tanpa kutip, yang memecah Kota Baru menjadi dua; dan menulis CABANG=Medan Solo tanpa kurung, yang bukan array sama sekali. "${CABANG[*]}" menggabung semua elemen menjadi satu kata, berguna untuk dicetak dalam satu baris.