¿Hay alguna forma de leer el último elemento de una matriz con bash?

Pregunta:

Si tengo una matriz con 5 elementos, por ejemplo:

[a][b][c][d][e]

Usando echo ${myarray[4]} puedo ver lo que contiene.

Pero, ¿y si no supiera la cantidad de elementos en una matriz dada? ¿Hay alguna forma de leer el último elemento de una matriz de longitud desconocida? es decir, ¿el primer elemento que se lee de derecha a izquierda para cualquier matriz?

Me gustaría saber cómo hacer esto en bash.

Respuesta:

A partir de bash 4.2 , 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 utilizado para hacer referencia a un elemento de una matriz indexada se evalúa como un número menor que cero, se interpreta como relativo a uno mayor que el índice máximo de la matriz, por lo que los índices negativos cuentan desde el final de la matriz, y 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 en cualquier expresión aritmética para calcular el índice, incluida una que calcula utilizando la longitud de la matriz ${#myarray[@]} explícitamente como ${myarray[${#myarray[@]} - 1]} para versiones mas antiguas.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım