kshの配列が新しい要素の追加をサポートしていることをどこかで読み+=
ましたが、試してみましたが機能しません:
[ksh] # arr=(a b c d)
[ksh] # arr+=e
[ksh] # echo ${arr[*]}
ae b c d
[ksh] #
なぜ にarr[0]
なるのae
ですか?
kshの配列が新しい要素の追加をサポートしていることをどこかで読み+=
ましたが、試してみましたが機能しません:
[ksh] # arr=(a b c d)
[ksh] # arr+=e
[ksh] # echo ${arr[*]}
ae b c d
[ksh] #
なぜ にarr[0]
なるのae
ですか?
配列に要素を追加するには、次のようにする必要があります。
arr+=(e)
を行うことarr+=e
で、配列の1番目の要素に追加されます。名前だけがarr
配列自体の最初の要素を指しているためです。
$ arr=(a b c d)
$ echo ${arr[0]}
a
$ echo $arr
a
ですarr+=(e)
。インデックスを指定しない単純な割り当ては、常に 0 番目の要素を参照します。
これは些細なケースであり、事態はさらに複雑になる可能性があることに注意してください。+=
コンテキストに応じて、単純な割り当てと複合割り当ての両方で異なる動作があり、bash、ksh93、および zsh でも異なるため、混乱しやすくなります。