Получить последний элемент в массиве Bash

Скажем, у меня есть массив:

arr=(a b c d e f)

Если я хочу получить последний элемент массива, я обычно должен получить общее количество элементов, вычесть один и использовать это число для вызова в качестве индекса:

$ echo ${#arr[@]}
6
$ echo ${arr[${#arr[@]}-1]}
f

Тем не мение,я вижу что в последнее время (Bash 4.2 - 4.3) вы можете использовать отрицательные индексы:

$ echo ${arr[-1]}
f
$ echo ${arr[-2]}
e

Поэтому мне интересно: когда это было введено? Может ли он использоваться другими оболочками, такими как ksh, zsh ...?

Мое исследование показывает:

Bash-4.3-rc1 доступен для FTP

а. Исправлена ​​ошибка, приводившая к присваиванию неустановленной переменной с использованием отрицательного индекса, что приводило к ошибке сегментации.

б. Исправлена ​​ошибка, приводившая к присвоению строковой переменной с использованием отрицательного индекса для использования неверного индекса.

...

Икс. Теперь оболочка позволяет присваивать, ссылаться и сбрасывать элементы индексированных массивов, используя отрицательные индексы (a [-1] = 2, echo $ {a [-1]}), которые отсчитываются от последнего элемента массива.

А такжеБаш ручная 4.3, на Массивах

Ссылка на переменную массива без нижнего индекса эквивалентна ссылке с нижним индексом 0. Если нижний индекс, используемый для ссылки на элемент индексированного массива, оценивается как число меньше нуля, он интерпретируется как относительный к значению, превышающему максимальный индекс массив, так что отрицательные индексы отсчитываются от конца массива, ииндекс -1 относится к последнему элементу.

Но мне интересно, было ли это уже в Bash 4.2, так как в первом ресурсе упоминалась ошибка, которая была исправлена.

Ответы на вопрос(1)

Ваш ответ на вопрос