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,它将添加到数组的第一个元素。这是因为只有名称arr指向数组本身的第一个元素:

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

arr+=(e)。任何未指定索引的简单赋值总是引用第零个元素。

请注意,这是一个微不足道的案例,事情可能会变得更加复杂。+=根据上下文的不同,简单赋值和复合赋值有不同的行为,并且在 bash、ksh93 和 zsh 之间也有不同,因此很容易混淆。

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

于 2013-03-22T06:45:07.747 回答