MC, 13:37 czwartek, 29.11.2012 r.
Ilustracja do artykułu: Linux bash - Wczytywanie listy elementów z pliku do zmiennej

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
Mamy więc listę kilku owoców. Teraz czas na nasz skrypt wyswietlListe.sh:
#!/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:

for WERS in $(cat lista.txt)

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
Udało nam się osiągnąć zamierzony cel, a zatem wczytaliśmy kolejno każdą linijkę pliku lista, do zmiennej.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: