2

kshの配列が新しい要素の追加をサポートしていることをどこかで読み+=ましたが、試してみましたが機能しません:

[ksh] # arr=(a b c d)
[ksh] # arr+=e
[ksh] # echo ${arr[*]}
ae b c d
[ksh] #

なぜ にarr[0]なるのaeですか?

4

2 に答える 2

5

配列に要素を追加するには、次のようにする必要があります。

arr+=(e)

を行うことarr+=eで、配列の1番目の要素に追加されます。名前だけがarr配列自体の最初の要素を指しているためです。

$ arr=(a b c d)
$ echo ${arr[0]}
a
$ echo $arr
a
于 2013-03-22T06:15:36.390 に答える
2

ですarr+=(e)。インデックスを指定しない単純な割り当ては、常に 0 番目の要素を参照します。

これは些細なケースであり、事態はさらに複雑になる可能性があることに注意してください。+=コンテキストに応じて、単純な割り当てと複合割り当ての両方で異なる動作があり、bash、ksh93、および zsh でも異なるため、混乱しやすくなります。

http://wiki.bash-hackers.org/syntax/arrays#storing_values

于 2013-03-22T06:45:07.747 に答える