【发布时间】:2021-08-23 01:41:25
【问题描述】:
在 Bash 中如何获取数组的最后一个索引?
这可行:$((${#array[@]} - 1)) 但不是很漂亮。
要获取数组的最后一个元素,可以执行${myarray[-1]} 是否有类似的索引选项?
【问题讨论】:
-
declare -i index; index=${#array[@]}-1; echo $index? -
@Cyrus 不是使用稀疏数组获取最后一个索引的方法。
-
看看这个Q&A re: is array sparse/dense; req 的一部分是找到最后一个索引; Socowi 的答案是指可以修改为返回最后一个索引的自定义内置函数;我的回答,连同大量 cmets,着眼于寻找最后一个索引的一些想法(即,基本上解析来自
typeset -p的输出);请记住,我们正在研究 large 数组的性能相关问题;对于(相对)小数组,该链接上提出的任何想法都可能足以满足此 OP 的要求 -
应该可能更新问题以验证这是否(不是)关联数组;假设一个(相对)小(关联)数组,一个蛮力想法:
printf "%s\n" "${!array[@]}" | sort -n | tail -1