Как получить доступ к последнему элементу в массиве bash на ОС Ma c? - PullRequest
0 голосов
/ 03 апреля 2020

Мне пришлось создать массив bash в ОС Ma c следующим образом. $1 представляет # из git коммитов, которые вы хотите сохранить в массиве.

IFS=$'\n' read -rd '' -a array<<< "$(git log -n $1 | grep commit |  awk '{print $2}')"

Я не могу получить доступ к последнему элементу массива как ${array[-1]}. Я получаю сообщение об ошибке «массив: неверный индекс массива».

Однако, когда я создаю массив в ОС linux, я могу получить доступ к последнему элементу массива таким же образом, как и раньше.

readarray -t array <<< "$(git log -n $1 | grep commit |  awk '{print $2}')"

echo ${array[-1]} успешно на компьютере Linux, но не на компьютере с ОС Ma c.

1 Ответ

2 голосов
/ 03 апреля 2020

В bash, слишком старом для поддержки отрицательных подписок, вам в конечном итоге понадобится что-то вроде:

echo "${array[$((${#array[@]} - 1))]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...