Bash如何获取数组最后一个索引 有没有类似取最后元素的简洁写法
Bash 数组获取最后一个索引的方法
Bash 原生提供了接近${myarray[-1]}风格的简洁写法来获取最后一个索引,不需要依赖复杂的算术表达式计算。
- 首选方案(适用于Bash 4.0及以上版本)
利用数组索引列表的负向切片语法即可直接获取:last_idx=${!array[@]: -1}
这里的${!array[@]}会返回数组所有已存在的索引,负向切片: -1代表取最后一个值。注意冒号和减号之间的空格不能省略,否则会被Bash识别为参数默认值语法导致报错。
示例代码:
这个方案还有个额外优势:支持稀疏数组。如果你的数组存在索引空缺(比如只定义了索引0、2、5的元素),用算术计算# 普通连续索引数组 myarray=(苹果 香蕉 橙子 葡萄) last_idx=${!myarray[@]: -1} echo $last_idx # 输出结果为 3,对应最后一个元素「葡萄」的索引${#array[@]}-1得到的结果会出错,但这个切片写法始终能返回真实存在的最大索引。 - 兼容低版本Bash的简化写法
如果你用的是Bash 4.0以下的旧版本,没有负向切片能力,可以用简化后的算术表达式写法,比常见写法去掉了一层多余的括号:last_idx=$(( ${#array[@]} - 1 ))
这个写法兼容性最好,所有Bash版本都支持,仅在稀疏数组场景下不适用。
内容的提问来源于stack exchange,提问作者user5507535
相关产品推荐
相关产品推荐

