fuumind Asked: 2022-05-02 00:37:24 +0800 CST2022-05-02 00:37:24 +0800 CST 2022-05-02 00:37:24 +0800 CST 在bash中,如何在没有循环的情况下获取数组最后一个元素的索引 772 在 bash 中,是否可以在不遍历整个数组的情况下获取数组最后一个元素的索引(可能是稀疏的),如下所示: a=( e0 e1 ... ) i=0 while [ "$i" -lt $(( ${#a[@]} - 1 )) ] do let 'i=i+1' done echo "$i" 至少从 bash v 4.2 开始,我可以使用获取数组中最后一个元素的值 e="${array[-1]}" 但这不会让我得到正指数,因为其他元素可能具有相同的值。 bash array 2 个回答 Voted Best Answer thanasisp 2022-05-02T01:14:53+08:002022-05-02T01:14:53+08:00 如果数组不是稀疏的,最后一个索引是元素数 - 1: i=$(( ${#a[@]} - 1 )) 要包含稀疏数组的情况,您可以创建索引数组并获取最后一个: a=( [0]=a [1]=b [9]=c ) indexes=( "${!a[@]}" ) i="${indexes[-1]}" echo "$i" 9 logic 2022-05-03T03:58:35+08:002022-05-03T03:58:35+08:00 lst=( [0]=1 [1]=2 [9]=3 ) echo ${lst[@]@A} # show elements and indexes echo ${lst[-1]} # last element echo ${!lst[@]} # list of indexes : ${!lst[@]} ; echo $_ # last index
如果数组不是稀疏的,最后一个索引是元素数 - 1:
要包含稀疏数组的情况,您可以创建索引数组并获取最后一个: