Skrypty powłoki Bash
Spisu treści:
- Czytanie pliku Składnia linia po linii
- Czytanie pliku linia po linii Przykłady
- Alternatywne metody odczytu plików
- Korzystanie z podstawienia procesu
- Korzystanie z ciągu tutaj
- Korzystanie z deskryptora pliku
- Wniosek
Pisząc skrypty Bash, czasami znajdziesz się w sytuacjach, w których musisz czytać plik linia po linii. Na przykład możesz mieć plik tekstowy zawierający dane, które powinny zostać przetworzone przez skrypt.
W tym samouczku omówimy, jak czytać plik linia po linii w Bash.
Czytanie pliku Składnia linia po linii
Najbardziej ogólna składnia odczytu pliku wiersz po wierszu jest następująca:
while IFS= read -r line do echo "$line" done < input_file
lub równoważna wersja jednowierszowa:
while IFS= read -r line; do echo $line; done < input_file
Jak to działa?
Plik wejściowy (
input_file
) to nazwa pliku, który chcesz otworzyć do odczytu poleceniem
read
. Polecenie
read
odczytuje plik linia po linii, przypisując każdą linię do zmiennej
line
. Po przetworzeniu wszystkich linii pętla while zakończy się. Wewnętrzny separator pól (
IFS
) jest ustawiony na łańcuch zerowy, aby zachować początkowe i końcowe białe znaki, które są domyślnym zachowaniem polecenia
read
.
Czytanie pliku linia po linii Przykłady
Rzućmy okiem na następujący przykład. Załóżmy, że mamy plik o nazwie
distros.txt
zawierający listę najpopularniejszych dystrybucji Linuksa i ich menedżerów pakietów oddzielonych przecinkami (
,
):
Ubuntu, apt Debian, apt CentOS, yum Arch Linux, pacman Fedora, dnf
Aby odczytać plik linia po linii, uruchom w swoim terminalu następujący kod:
while IFS= read -r line do echo "$line" done < distros.txt
Kod odczyta plik po linii, przypisze każdą linię do zmiennej i wyśle echo zmiennej. Zasadniczo zobaczyłbyś to samo wyjście, jakbyś wyświetlał zawartość pliku za pomocą polecenia cat.
Co jeśli chcesz wydrukować tylko dystrybucje korzystające z apt? Jednym ze sposobów byłoby użycie instrukcji if i sprawdzenie, czy wiersz zawiera apt substring:
while IFS= read -r line do if]; then echo "$line" fi done < distros.txt
Ubuntu, apt Debian, apt
Podczas odczytywania pliku linia po linii można również przekazać więcej niż jedną zmienną do polecenia read, która podzieli linię na pola na podstawie
IFS
. Pierwsze pole jest przypisane do pierwszej zmiennej, drugie do drugiej zmiennej i tak dalej. Jeśli jest więcej pól niż zmiennych, pozostałe pola są przypisywane do ostatniej zmiennej.
W poniższym przykładzie ustawiamy IFS na przecinek (
,
) i przekazujemy dwie zmienne
distro
i
pm
do polecenia read. Wszystko od początku linii do pierwszego przecinka zostanie przypisane do pierwszej zmiennej (
distro
), a reszta linii zostanie przypisana do drugiej zmiennej (
pm
):
while IFS=, read -r distro pm do echo "$pm" is the package manager for "$distro" done < distros.txt
apt is the package manager for Ubuntu apt is the package manager for Debian yum is the package manager for CentOS pacman is the package manager for Arch Linux dnf is the package manager for Fedora
Alternatywne metody odczytu plików
Korzystanie z podstawienia procesu
Podstawienie procesu pozwala przekazać dane wyjściowe z polecenia jako nazwę pliku:
while IFS= read -r line do echo "$line" done < <(cat input_file)
Korzystanie z ciągu tutaj
Here String to wariant dokumentu Here. Ciąg
(cat input_file)
zachowa nowe linie:
while IFS= read -r line do echo "$line" done <<< $(cat input_file)
Korzystanie z deskryptora pliku
Można również podać dane wejściowe do pętli za pomocą deskryptora pliku:
while IFS= read -r -u9 line do echo "$line" done 9< input_file
Podczas pracy z deskryptorami plików używaj liczb od 4 do 9, aby uniknąć konfliktu z wewnętrznymi deskryptorami plików powłoki.
Wniosek
W Bash możemy odczytać plik wiersz po wierszu, podając nazwę pliku jako dane wejściowe do pętli while read.
terminal bashWitamy w Linii Linii
PC World z dumą ogłasza wprowadzenie na rynek nowego bloga poświęconego oprogramowaniu Linux i Open Source.
Jak przekonwertować plik BAT na plik EXE w systemie Windows
Konwerter plików Bat to Exe to bezpłatne narzędzie Windows do konwertowania plików BAT na EXE bez użycia CMD . Możesz także użyć tego narzędzia online "Nie bój się".
Ultradźwiękowy skaner linii papilarnych a optyczny skaner linii papilarnych: jak…
Zarówno ultradźwiękowe, jak i optyczne skanery linii papilarnych działają podobnie, ale różnią się znacznie bardziej w tle. Przeczytaj poniższe porównanie, aby zobaczyć, kto wykonuje lepszą pracę.







