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.
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.
Fajnie, sprawdzenie palindroma stało się teraz znacznie łatwiejsze. – sjsam
Aby odpowiedzieć na twoje inne pytanie: To też jest w zsh. Nie wiem o ksh. – user1934428