Bash'te diziye indeks belirtmeden yeni bir eleman ekleme

PHP'lerdeki $array[] = 'foo'; gibi bir şeyi bash ile yapmanın bir yolu var mı?

array[0] = 'foo'
array[1] = 'bar'
Çözüm

Evet, var:

ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')

Bash Referans Kılavuzu:

Bir atama deyiminin bir kabuk değişkenine veya dizi dizinine bir değer atadığı bağlamda (bkz. Diziler), '+=' işleci değişkenin önceki değerine eklemek veya ilave etmek için kullanılabilir.

Yorumlar (15)
$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
Yorumlar (3)

Diziniz her zaman sıralıysa ve 0'dan başlıyorsa, bunu yapabilirsiniz:

array[${#array[@]}]='foo'

# gets the length of the array
${#array_name[@]}

Eşittir işareti arasında yanlışlıkla boşluk kullanırsanız:

array[${#array[@]}] = 'foo'

Ardından şuna benzer bir hata alırsınız:

array_name[3]: command not found
Yorumlar (4)