Saltar al contenido

¿Hay alguna manera de leer el último elemento de un array con bash?

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 bashpuede 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *