Linux bash - Wczytywanie listy elementów z pliku do zmiennej
Tym razem spróbujemy wczytywać w Bash-u kolejne linijki pliku, jako wartości zmiennej, co jak wynika z mojego doświadczenia, jest o tyle istotnym zagadnieniem, co bardzo często przydatnym.
Jak wczytywać kolejne wersy pliku do zmiennej w Bash-u?
Umiejętność wykorzystywania listy znajdującej się w zewnętrznym pliku, niezależnie od liczby jej elementów stwarza bardzo obszerne możliwości. A nie jest to wcale trudne, pod warunkiem, że potrafimy korzystać z pętli For. Żeby niepotrzebnie nie zaciemniać sytuacji, posłużymy się bardzo prostym przykładem, w którym będziemy mieli w pliku listę elementów, każdy w osobnej linijce, a następnie stworzymy skrypt, który wczyta tę listę i wyświetli ją element po elemencie. A żeby udowodnić, że faktycznie czytamy plik, wers po wersie, dołączymy podczas wyświetlania numer elementu (wykorzystamy przy tym inkrementację wartości zmiennej liczbowej, o czym możemy przeczytać tutaj: Linux & Bash - Inkrementacja i dekrementacja zmiennych liczbowych).Spójrzmy więc na zawartość pliku lista.txt:
jabłko banan kiwi morela śliwka wiśnia ananas porzeczka
#!/bin/bash I=1 # inicjujemy zmienną mówiącą o numerze elementu for WERS in $(cat lista.txt) do echo "$I\t $WERS" I=`expr $I + 1` done
Skrypt jest bardzo prosty, zaś jego kluczowym elementem jest dyrektywa:
Możemy ją rozumieć jako dynamiczne stworzenie zmiennej z zawartością pliku lista.txt, a następnie przypisanie każdego elementu tej kolekcji do zmiennej WERS, na której operujemy we wnętrzu pętli For (wyświetlamy tę zmienną). Zerknijmy więc jak to będzie wyglądało w praktyce:
$ sh wyswietlListe.sh 1 jabłko 2 banan 3 kiwi 4 morela 5 śliwka 6 wiśnia 7 ananas 8 porzeczka
Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!