Существует ли способ считать последний элемент массива с ударом?

Какой дистрибутив Linux Вы используете? Возможно, необходимо использовать корректный диспетчер пакетов (как об/мин, конфетка....) или даже установить от исходного кода. Я не делаю recoment, который Вы для использования склонный - получаете, если распределение не основано на нем.

попытка: sudo yum -y install aircrack-ng или rpm -ihv http://dag.wieers.com/rpm/packages/aircrack-ng/aircrack-ng-0.7-1.el4.rf.i386.rpm или emerge aircrack-ng

72
27.04.2015, 08:33
4 ответа

Вы можете просто использовать отрицательный индекс $ {myarray [-1]} , чтобы получить последний элемент. Вы можете сделать то же самое для второго, и так далее; В Bash:

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

То же самое также работает для назначения. Когда он говорит «выражение», это действительно означает выражение; Вы можете писать в любом арифметическом выражении там, чтобы вычислить индекс, включая то, что вычисляет с помощью длины массива $ {# Myarray [@]} явно.

94
27.01.2020, 19:31

Современный Bash (V4.1 или лучше)

Вы можете прочитать последний элемент при индексе -1 :

$ a=(a b c d e f)
$ echo ${a[-1]}
f

Поддержка доступа к численным индексированным массивам Конец с использованием негативных индексов начал с Bash версии 4.1-alpha .

Старый Bash (V4.0 или ранее)

Вы должны получить длину массива из $ {# A [@]} , а затем вычтите, чтобы получить последний элемент:

$ echo ${a[${#a[@]}-1]}
f

Bash лечит атрибуты массива в качестве арифметического выражения, нет необходимости в дополнительной записи, например $ ((...)) , для форсирования арифметической оценки.

47
27.01.2020, 19:31

Bash Присвоение массива, ссылка, несуществующее с отрицательным индексом были только , добавляемым в Bash 4.3 . С более старой версией Bash вы можете использовать выражение в индексе Array [$ {# Array [@] - 1}]

Другой способ, также работать со старой версией Bash (Bash 3.0 или лучше):

$ a=([a] [b] [c] [d] [e])
$ printf %s\\n "${a[@]:(-1)}"
[e]

или:

$ printf %s\\n "${a[@]: -1}"
[e]

Использование отрицательного смещения, вам нужно отделить : - - - , чтобы избежать путать с : - Расширение.

15
27.01.2020, 19:31

Также вы можете сделать это:

$ a=(a b c d e f)
$ echo ${a[$(expr ${#a[@]} - 1)]}

Результат:

$ f

То, что вы делаете, это получаете все количество элементов в массиве и вычитаете -1, потому что вы получаете все элементы, а не начинаете с индекса массива, который равен 0.

-2
27.01.2020, 19:31

Теги

Похожие вопросы