Skocz do zawartości

Bash- Tablice


#webboy

Rekomendowane odpowiedzi

Witam. Niedawno zacząłem uczyć się pisania skryptów w bashu. Teraz pracuje nad taką prostą, tekstową giierką i będąc w trakcie robienia menu trafiłem na mały problem. Czy da się do wskaźnika tablicy przekazać warotść innej zmiennej? Po niżej zamieściłem przykładowy kod pokazujący o co mi chodzi:

 

#!/bin/bash

tablica=(element1 element2 element3)

licz_elementy_tablicy=$(echo ${#tablica[@]})   #funkcja liczaca elementy tablicy
echo ${tablica[$licz_elementy_tablicy]} #teraz powinna wyswietlic sie ostatnia wartosc tablicy

 

A jeśli to możliwe czy istnieje możliwość wykonywania we wskaźniku tablicy prostycz działań arytmetycznych na dwóch zmiennych? Np:

 

#!/bin/bash

tablica=(element1 element2 element3)

licz_elementy_tablicy=$(echo ${#tablica[@]})   #funkcja liczaca elementy tablicy
echo ${tablica[$licz_elementy_tablicy]} #teraz powinna wyswietlic sie ostatnia wartosc tablicy
echo ${tablica[$licz_elementy_tablicy - $licz_element_tablicy]} #teraz zmienne powinny odjąć się od siebie i  wartość wskaźnika powinna wynieść 0

 

Jestem naprawde początkujący w tej kwestii i prosiłbym o przyzwoite wytłumaczenie smile.gif

Odnośnik do komentarza
Udostępnij na innych stronach

#!/bin/bash

tablica=(element1 element2 element3)

licz_elementy_tablicy=$(echo ${#tablica[@]})   #funkcja liczaca elementy tablicy
echo ${tablica[$licz_elementy_tablicy]} #teraz powinna wyswietlic sie ostatnia wartosc tablicy

Co do tej ostatniej linijki: wcale nie powinna. Przy liczeniu ilości rekordów w tablicy bash podaje jej rzeczywistą ilość, w tym przypadku 3. Natomiast w chwili odwołania się do konkretnych rekordów sa one liczone od 0, więc aby wyświetliła się ostatnia wartość tablicy należy wpisać:

echo ${tablica[$licz_elementy_tablicy-1]}

Natomiast:

echo ${tablica[$licz_elementy_tablicy - $licz_element_tablicy]}

. Błąd polega na tym iż przed i po znaku - nie powinny znajdować się spacje. A tak w ogóle uważam, że prościej w takim przypadku wpisać po prostu to 0 wink.gif

 

EDIT: O kurczę, a jednak nie :] Właśnie się zorientowałem, że najpierw jest $licz_elementy_tablicy, a potem $licz_element_tablicy

Edytowane przez ecik__
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...