【发布时间】:2016-08-26 22:44:28
【问题描述】:
假设我有一个数组:
arr=(a b c d e f)
如果我想获取数组的最后一个元素,我通常必须获取元素的总数,减去一个并使用该数字作为索引调用:
$ echo ${#arr[@]}
6
$ echo ${arr[${#arr[@]}-1]}
f
不过,I see 最近(Bash 4.2 - 4.3)您可以使用负索引:
$ echo ${arr[-1]}
f
$ echo ${arr[-2]}
e
所以我想知道:这是什么时候引入的?它是否也可用于其他 shell,如 ksh、zsh...?
我的研究表明:
Bash-4.3-rc1 available for FTP
一个。修复了一个错误,该错误导致使用 负下标会导致分段错误。
b.修复了导致使用 负下标使用不正确的索引。
...
x。 shell 现在允许分配、引用和取消设置元素 使用负下标的索引数组 (a[-1]=2, echo ${a[-1]}) 从数组的最后一个元素开始倒数。
引用不带下标的数组变量等价于 下标为 0 的引用。如果下标用于引用 索引数组的元素计算为小于零的数字, 它被解释为相对于大于最大索引的 1 数组,所以负索引从数组的末尾倒数, -1 的索引指的是最后一个元素。
但我想知道这是否已经在 Bash 4.2 中,因为第一个资源提到了一个已修复的错误。
【问题讨论】:
-
很好,现在检查回文变得容易多了。
-
回答您的其他问题:它也在 zsh 中。不知道 ksh。