Bienvenido a nuestra comunidad, ahora vas a hallar la respuesta de lo que andabas buscando.
Solución:
A partir de bash 4.2, solo puede usar un índice negativo $myarray[-1]
para obtener el último elemento. Puede hacer lo mismo para el penúltimo, y así sucesivamente; en bash:
Si el subíndice se usa para hacer referencia a un elemento de un índice array
evalúa a un número menor que cero, se interpreta como relativo a uno mayor que el índice máximo de la arraypor lo que los índices negativos cuentan hacia atrás desde el final del arrayy un índice de -1 se refiere al último elemento.
Lo mismo también funciona para la asignación. Cuando dice “expresión” realmente significa una expresión; puede escribir cualquier expresión aritmética allí para calcular el índice, incluida una que calcula usando la longitud del array $#myarray[@]
Me gusta explícitamente $myarray[$#myarray[@] - 1]
para versiones anteriores.
Fiesta moderna (v4.1 o superior)
Puedes leer el último elemento en el índice -1
:
$ a=(a b c d e f)
$ echo $a[-1]
f
El soporte para acceder a matrices indexadas numéricamente desde el final usando índices negativos comenzó con la versión 4.1-alpha de bash.
bash anterior (v4.0 o anterior)
debes conseguir el array longitud desde $#a[@]
y luego restar uno para obtener el último elemento:
$ echo $a[$#a[@]-1]
f
Dado que bash trata array subíndices como una expresión aritmética, no hay necesidad de notación adicional, como $((...))
para forzar la evaluación aritmética.
bash
array la asignación, la referencia y el desarmado con índice negativo solo se agregaron en bash 4.3. Con la versión anterior de bash
puede usar la expresión en el índice array[$#array[@]-1]
Otra forma, también trabajar con una versión anterior de bash
(bash 3.0 o superior):
$ a=([a] [b] [c] [d] [e])
$ printf %s\n "$a[@]:(-1)"
[e]
o:
$ printf %s\n "$a[@]: -1"
[e]
Usando el desplazamiento negativo, necesita separar :
con -
para evitar ser confundido con el :-
expansión.
Nos puedes añadir valor a nuestro contenido informacional cooperando tu experiencia en las acotaciones.