回答:
はいあります:
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
代入ステートメントがシェル変数または配列インデックス(配列を参照)に値を代入しているコンテキストでは、「+ =」演算子を使用して、変数の以前の値に追加または追加できます。
ARRAYは実際の変数名のプレースホルダーにすぎないことに注意してください。あなたの配列のインデックスがある場合でもないシーケンシャル、と追加すると+=、単純に最高のインデックス+ 1に割り当てる
                    ${myarray[@]}スカラーのように配列変数を参照することは、要素0にアクセスすることと同じです。つまり$myarray、と同じ${myarray[0]}です。
                    ダムGuyは指摘し、それは、配列は0から始まり、シーケンシャルであるかどうかに注意することが重要です。隣接していないインデックスに割り当てを行ったり、設定を解除したりできるので${#array[@]}、配列の最後にある次のアイテムが常にあるとは限りません。
$ array=(a b c d e f g h)
$ array[42]="i"
$ unset array[2]
$ unset array[3]
$ declare -p array     # dump the array so we can see what it contains
declare -a array='([0]="a" [1]="b" [4]="e" [5]="f" [6]="g" [7]="h" [42]="i")'
$ echo ${#array[@]}
7
$ echo ${array[${#array[@]}]}
h
最後のインデックスを取得する方法は次のとおりです。
$ end=(${!array[@]})   # put all the indices in an array
$ end=${end[@]: -1}    # get the last one
$ echo $end
42
これは、配列の最後の要素を取得する方法を示しています。あなたはしばしばこれを見るでしょう:
$ echo ${array[${#array[@]} - 1]}
g
ご覧のとおり、ここではスパース配列を扱っているため、これは最後の要素ではありません。ただし、これはスパース配列と連続配列の両方で機能します。
$ echo ${array[@]: -1}
i
${array[@]: start[:count]}count elemsを返します。または、指定されていない場合は、残りのすべての要素。次のelemから開始します。-start> = 0の場合:elemから。インデックスが> = startである。-start <0の場合:elemから。そのインデックスは(最後の配列インデックス+ 1)-abs(start); 警告:abs(start)>(last array index + 1)の場合、null文字列が返されます。countを指定すると、インデックスが最初から連続していない場合でも、同じ数の要素が返されます。
                    ${array[-1]}
                    $ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
arr=("${arr[@]}" "new")スペースのある要素がある場合に使用します
                    配列が常にシーケンシャルであり、0から始まる場合、これを行うことができます。
array[${#array[@]}]='foo'
# gets the length of the array
${#array_name[@]}
等号の間に誤ってスペースを使用した場合:
array[${#array[@]}] = 'foo'次に、次のようなエラーが表示されます。
array_name[3]: command not found+=構文(E-T172の答え@参照)である()単純、および(b)には、非連続的である、および/または0で始まっていない配列で動作します
                    +=に追加されたbashの以前のバージョンでも機能します(例:バージョン2
                    $arr += ($el)文字列をスペースで分割し、各要素を追加するように見えました。