我在某处读到ksh的数组支持+=
来附加新元素,但我尝试了它并且它不起作用:
[ksh] # arr=(a b c d)
[ksh] # arr+=e
[ksh] # echo ${arr[*]}
ae b c d
[ksh] #
为什么arr[0]
变为ae
?
答案 0 :(得分:6)
要向数组添加元素,它应该是这样的:
arr+=(e)
通过执行arr+=e
,它将添加到数组的第一个元素。因为只有名称arr
指向数组本身的第一个元素:
$ arr=(a b c d)
$ echo ${arr[0]}
a
$ echo $arr
a
答案 1 :(得分:2)
这是arr+=(e)
。任何未指定索引的简单赋值始终引用第0个元素。
请注意,这是一个微不足道的案例,事情会变得更加复杂。 +=
根据上下文对简单赋值和复合赋值都有不同的行为,bash,ksh93和zsh之间也有所不同,因此很容易混淆。