次のような配列を検討してください。
array=("BMW E46" "Ford Mustang" "Toyota GT86")
次のコマンドを実行すると、3つの要素があることがわかります。
echo ${#array[@]} # outputs 3
次に、初期配列から要素を削除します。
unset array[0]
これにより配列から要素が削除されますが、インデックスは同じままです。
echo ${!array[@]} # output: 1 2
この問題に対処する私の方法は(通常)入力するだけですarray=(${array[@]})
が、この場合、コマンドを実行すると、要素がとして解析され('Ford' 'Mustang' ...)
ます。配列要素を台無しにせずにインデックスを修正する方法はありますか?
${array[@]}
各要素が個別のフィールドとして保持されるように、二重引用符で囲みます。
$ array=("BMW E46" "Ford Mustang" "Toyota GT86")
$ unset array[0]
$ array=("${array[@]}")
$ declare -p array
declare -a array=([0]="Ford Mustang" [1]="Toyota GT86")
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加