alphasec academy

while read -r line; do echo "Linia: $line"; done < dict.txt - jeden ze sposobów czytania linijka po linijce z pliku

Dodatkowe informacje

W codziennej pracy w bashu nie raz trzeba przetwarzać pliki linijka po linijce, powyżej jeden ze sposobów na dokonanie tego. Polecenie
read
jest wbudowane w powłokę bash. Opcjonalny parametr
-r
powoduje, że backslash w odczytywanej linijce jest traktowany jak każdy inny znak (a nie jako tzw. escape character).

Oczywiście, są inne metody, żeby dokonać tego samego. Dość podobną konstrukcją jest:
cat dict.txt | while read -r line; do echo "Linia: $line"; done
i chociaż wynik jest taki sam w naszym przypadku, jest tutaj subtelna różnica. Dla dociekliwych, zachęcam do zbadania tematu.

Obie konstrukcje w akcji

drg@juliet:/tmp$ echo -e 'P@ssw0rd\nKopytko\nLato2023!' > dict.txt
drg@juliet:/tmp$ while read -r line; do echo "Linia: $line"; done < dict.txt
Linia: P@ssw0rd
Linia: Kopytko
Linia: Lato2023!
drg@juliet:/tmp$ cat dict.txt | while read -r line; do echo "Linia: $line"; done
Linia: P@ssw0rd
Linia: Kopytko
Linia: Lato2023!
drg@juliet:/tmp$

Przydatne linki


Subskrybuj

Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.