$ array=foo
$ declare -p array
declare -- array="foo" # it's not an array
$ echo "${array[0]}" # we can get the value through index 0
foo
$ declare -p array
declare -- array="foo" # it's still not an array
$ array[1]=bar
$ declare -p array
declare -a array=([0]="foo" [1]="bar") # now it is
$ echo $array # though this still works..
foo
array
与 相同array[0]
,与$array
相同${array[0]}
。0
在 Bash 中,即使array
实际上不是数组,也可以使用索引进行引用。但是,使用索引(零或不)分配会将变量转换为数组。您引用的手册页/手册的完整部分是:
它指的是这样的任务:
上述两个是相等的,因为索引从零开始,并且(以下)未索引的值被放入连续的索引中。同理,下面的两个赋值也是相等的:
几段之后,明确提到了索引 0 和未索引引用的相等性: