PHPの $array[] = 'foo';
のようなことを、bashで行う方法はありますか?
array[0] = 'foo'
array[1] = 'bar'
はい、あります。
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
Bashリファレンスマニュアルを参照してください。
代入文がシェルの変数や配列のインデックス(「配列」参照)に値を割り当てる文脈では、「+=」演算子を使って、変数'の前の値に追加したり、追記したりすることができます。
$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
配列が常にシーケンシャルで、0から始まる場合は、このようにすることができます。
array[${#array[@]}]='foo'
# gets the length of the array
${#array_name[@]}
うっかり等号の間にスペースを使ってしまった場合。
array[${#array[@]}] = 'foo'
のようなエラーが表示されます。
array_name[3]: command not found