Bashで配列に要素を追加/削除する方法は?

Bashで配列に要素を追加/削除する方法は?

いくつかの要素を含む配列がありますが、新しい項目を配列の先頭にプッシュしたいと思います。どうすればいいですか?

ベストアンサー1

配列の先頭に要素を追加するには、を使用します。

arr=("new_element" "${arr[@]}")

一般的にこれを行います。

arr=("new_element1" "new_element2" "..." "new_elementN" "${arr[@]}")

配列の末尾に要素を追加するには、を使用します。

arr=( "${arr[@]}" "new_element" )

あるいはその逆に

arr+=( "new_element" )

一般的にこれを行います。

arr=( "${arr[@]}" "new_element1" "new_element2" "..." "new_elementN") #Or
arr+=( "new_element1" "new_element2" "..." "new_elementN" )

配列の特定のインデックスに要素を追加するには、を使用します。

Index2の位置に要素を追加するとしましょう。到着[2]、実際に次のサブ配列をマージします。

  1. Indexposition2より前のすべての要素を取得する到着[0]そして到着[1];
  2. 配列に要素を追加します。
  3. インデックス位置2から最後まですべての要素を取得します。到着[2]到着[3]、…。

    arr=( "${arr[@]:0:2}" "new_element" "${arr[@]:2}" )
    

配列から要素を削除

配列から要素(要素#3と仮定)を削除することに加えて、2つのサブ配列を連結する必要があります。最初のサブ配列は要素#3の前の要素を含み、2番目のサブ配列は要素#3の後の要素を含みます。

arr=( "${arr[@]:0:2}" "${arr[@]:3}" )
  • ${arr[@]:0:2}二つの要素を得る到着[0]そして到着[1]配列の先頭から始まります。
  • ${arr[@]:3}index3からすべての要素を取得します。到着[3] 最後まで。

    可能な便利な方法は、要素#3(arr [2])を除いてarrを再構築することです。

    del_element=3; arr=( "${arr[@]:0:$((del_element-1))}" "${arr[@]:$del_element}" )
    

    から除外する要素を指定しますdel_element=

要素を削除する別の方法は次のとおりです。

  1. 使用unset(実際に要素に「null」値を割り当てる)

    unset -v 'arr[2]'
    
  2. 配列要素の値がわかっている場合は、置換モードを使用して値を切り捨てます(空の文字列に置き換えます)。

    arr=( "${arr[@]/PATTERN/}" )
    

印刷配列

printf '%s\n' "${arr[@]}"

おすすめ記事