Existe uma maneira de fazer algo como PHPs $array[] = 'foo';
in bash vs doing:
array[0] = 'foo'
array[1] = 'bar'
Sim, há:
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
No contexto onde uma instrução de atribuição está atribuindo um valor a uma variável shell ou índice de array (veja Arrays), o operador '+=' pode ser usado para anexar ou adicionar ao valor anterior da variável's.
$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
Se o seu array é sempre sequencial e começa em 0, então você pode fazer isso:
array[${#array[@]}]='foo'
# gets the length of the array
${#array_name[@]}
Se você inadvertidamente usar espaços entre o sinal de igualdade:
array[${#array[@]}] = 'foo'
Então você receberá um erro semelhante a:
array_name[3]: command not found