如果使用语法分配了任何variables,则会自动创build索引数组
name[subscript]=value
下标被视为必须计算为数字的算术expression式。 如果下标的计算结果为小于零的数字,则将其用作大于数组最大索引的偏移量(因此,下标-1表示数组的最后一个元素)。
所以我想我会试一试,得到以下结果:
$ muh=(1 4 'a' 'bleh' 2) $ echo $muh 1 $ echo ${muh[*]} 1 4 a bleh 2 # so far so good so now I'll try a negative ... $ echo ${muh[-1]} -bash: muh: bad array subscript # didn't go as planned!
我做错了什么,或者网站错了,或者是与在CentOS下运行的bash不同的gnu bash? 谢谢!
如果你只是想要最后一个元素
$ echo ${muh[*]: -1} 2
如果你想要在最后一个元素旁边
$ echo ${muh[*]: -2:1} bleh
根据Greg Wooledge的wiki (链接到bash changelog),在4.2版本的alpha版本中,负面的索引语法被添加到了bash中。
如果你man bash
数组的部分不列出这种行为。 在bash中可能是新的(gnu?)。
在CentOS 6.3(bash 4.1.2)中失败
在Ubuntu 14.04 / GNU bash版本4.3.11(1)的电脑上,负下标对我来说工作得很好,但是它会返回:
line 46: [-1]: bad array subscript
当我尝试在4.2.46(1)上运行相同的脚本时。 一世