2016-05-02 20 views
7

Say Mam tablicę:Uzyskaj ostatni element w bash tablicy

arr=(a b c d e f) 

Jeśli chcę uzyskać ostatni element tablicy, ja zazwyczaj muszą uzyskać całkowitą liczbę elementów, odjąć jeden i używać numer zadzwonić jako wskaźnik:

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

jednak I see że niedawno (Bash 4.2 - 4.3) można wykorzystać ujemne indeksy:

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

Zastanawiam się: kiedy to zostało wprowadzone? Czy jest również użyteczny dla innych powłok, takich jak ksh, zsh ...?

Moje badania pokazują:

Bash-4.3-rc1 available for FTP

się. Naprawiono błąd, który powodował przypisanie zmiennej niezwiązanej przy użyciu negatywnego indeksu dolnego w celu spowodowania błędu segmentacji.

b. Naprawiono błąd, który powodował przypisanie zmiennej łańcuchowej przy użyciu negatywnego indeksu dolnego w celu użycia nieprawidłowego indeksu.

...

x. Powłoka umożliwia teraz przypisywanie, odwoływanie i usuwanie elementów indeksowanych tablic za pomocą ujemnych indeksów dolnych (a [-1] = 2, echo $ {a [-1]}) , które odliczają od ostatniego elementu tablicy.

I Bash manual 4.3, on Arrays

Odwoływanie zmiennej bez indeksu odpowiada odwołującego się z indeksem 0. Jeśli indeks do zaznaczenia element indeksowanej tablicy ma wartość liczby mniej niż zero, jest interpretowany jako względny względem jednego większego niż maksymalny indeks tablicy, więc ujemne indeksy odliczają wstecz od końca tablicy, , a indeks z -1 odnosi się do ostatniego elementu.

Ale zastanawiam się, czy to było już w Bash 4.2, ponieważ pierwszy zasób wspomina o błędzie, który został naprawiony.

+1

Fajnie, sprawdzenie palindroma stało się teraz znacznie łatwiejsze. – sjsam

+1

Aby odpowiedzieć na twoje inne pytanie: To też jest w zsh. Nie wiem o ksh. – user1934428

Odpowiedz

4

O ile widzę w https://tiswww.case.edu/php/chet/bash/CHANGES nowa funkcja jest obecnie w tej części:

Niniejszy dokument zawiera szczegółowy opis zmian pomiędzy tą wersją, bash-4.3-alfa, i poprzedniej wersji, bash -4.2-wydanie.

...

x. Powłoka umożliwia teraz przypisywanie, odwoływanie i usuwanie elementów indeksowanych tablic za pomocą ujemnych indeksów dolnych (a [-1] = 2, echo $ {a [-1]}), które odliczają od ostatniego elementu tablicy.

Rozwiązaniem w:

Dokument ten wyszczególnia zmiany pomiędzy tą wersją, bash-4.3-beta2 i theprevious wersji bash-4,3-beta.

1 Zmiany na Bash

a. Naprawiono błąd, który powodował przypisanie do zmiennej unset za pomocą ujemnego indeksu dolnego, aby spowodować błąd segmentacji.

b. Naprawiono błąd, który powodował przypisanie zmiennej łańcuchowej za pomocą ujemnego indeksu dolnego, aby użyć niepoprawnego indeksu.

To poprawka nowej funkcji w Bash 4.3.

Powiązane problemy