Obtener el último elemento en la matriz Bash
Digamos que tengo una matriz:
arr=(a b c d e f)
Si quiero obtener el último elemento de la matriz, normalmente tengo que obtener el número total de elementos, restar uno y usar ese número para llamar como índice:
$ echo ${#arr[@]}
6
$ echo ${arr[${#arr[@]}-1]}
f
Sin embargo,Veo que recientemente (Bash 4.2 - 4.3) puede usar índices negativos:
$ echo ${arr[-1]}
f
$ echo ${arr[-2]}
e
Entonces me pregunto: ¿cuándo se introdujo esto? ¿También puede ser utilizado por otros shells como ksh, zsh ...?
Mi investigación muestra:
Bash-4.3-rc1 disponible para FTP
a. Se corrigió un error que causaba la asignación a una variable no establecida usando un subíndice negativo para dar como resultado una falla de segmentación.
si. Se corrigió un error que causaba la asignación a una variable de cadena usando un subíndice negativo para usar el índice incorrecto.
...
X. El shell ahora permite asignar, hacer referencia y desarmar elementos de matrices indexadas utilizando subíndices negativos (a [-1] = 2, echo $ {a [-1]}) que cuentan desde el último elemento de la matriz.
Hacer referencia a una variable de matriz sin un subíndice es equivalente a hacer referencia a un subíndice de 0. Si el subíndice utilizado para hacer referencia a un elemento de una matriz indexada se evalúa en 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.
Pero me pregunto si esto ya estaba en Bash 4.2, ya que el primer recurso menciona un error que se corrigió.