【问题标题】:Get last element in Bash array获取 Bash 数组中的最后一个元素
【发布时间】: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]}) 从数组的最后一个元素开始倒数。

还有Bash manual 4.3, on Arrays

引用不带下标的数组变量等价于 下标为 0 的引用。如果下标用于引用 索引数组的元素计算为小于零的数字, 它被解释为相对于大于最大索引的 1 数组,所以负索引从数组的末尾倒数, -1 的索引指的是最后一个元素

但我想知道这是否已经在 Bash 4.2 中,因为第一个资源提到了一个已修复的错误。

【问题讨论】:

  • 很好,现在检查回文变得容易多了。
  • 回答您的其他问题:它也在 zsh 中。不知道 ksh。

标签: arrays bash shell


【解决方案1】:

据我在https://tiswww.case.edu/php/chet/bash/CHANGES 中看到的,新功能在这部分:

本文档详细介绍了这个版本之间的变化,bash-4.3-alpha, 和之前的版本,bash-4.2-release

...

x。 shell 现在允许使用负下标(a[-1]=2,echo ${a[-1]})分配、引用和取消设置索引数组的元素,从数组的最后一个元素开始倒数。

修复:

本文档详细介绍了此版本 bash-4.3-beta2 与上一版本 bash-4.3-beta 之间的更改。

1 对 Bash 的更改

一个。修复了一个导致 使用负下标分配给未设置的变量会导致分段错误。

b.修复了导致使用负下标分配给字符串变量以使用不正确索引的错误。

它修复了 Bash 4.3 中的一项新功能。

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2013-12-01
    • 2012-08-18
    • 2018-08-17
    相关资源
    最近更新 更多