Osnovna sintaksa retka while read
Sljedeća sintaksa koristi se za bash ljusku za čitanje datoteke pomoću while petlje:
dok čitati -rcrta;
čini
izbaciti 'linija $';
učinjeno <ulaz.datoteka
Opcija '-r' u gore spomenutoj sintaksi proslijeđena je naredbi za čitanje koja izbjegava tumačenje povratne kose crte. Opcija ‘input_file’ predstavlja naziv vaše datoteke kojoj želite pristupiti pomoću naredbe ‘read’.
Unutarnji razdjelnik polja skraćeno kao IFS može se koristiti prije nego što se naredba čitanja postavi na null niz koji sprječava skraćivanje početnog ili zadnjeg razmaka.
dok IFS=čitati -rcrta;
čini
izbaciti linija $;
učinjeno <ulaz.datoteka
Otvorite terminal pomoću prečaca Ctrl + Alt + t, a zatim pokrenite sljedeće naredbe na njemu.
Primjer # 1: Čitanje datoteke redak po redak
Uzmimo primjer u kojem pretpostavimo da imamo datoteku pod imenom OS.txt koja sadrži nazive svih važnih distribucija Linuxa. Ako želite čitati datoteku bez upotrebe naredbe 'cat', u tu svrhu možete izvršiti sljedeću naredbu za izvršavanje određenog zadatka. Koristit ćemo petlju while koja će čitati svaki redak iz datoteke OS.txt i pohranjivati sadržaj u svakom koraku u promjenjivu liniju $ koju kasnije možete prikazati.
Zalijepite sljedeće nazive distribucija Linuxa u datoteku OS.txt
CentOS
Ubuntu
Debian
LinuxMint $dok čitaticrta;
čini
izbaciti linija $;
učinjeno <OS.txt
Iz gornje naredbe dobit ćete sljedeći odgovor u prozoru terminala:
Primjer 2: Čitanje datoteke pomoću bash skripte
Napravite bash datoteku, a zatim dodajte dolje navedeni kod u ovu datoteku kako biste pročitali sadržaj datoteke. Prethodnu tekstualnu datoteku možete pohraniti u novu varijablu $ filename, a varijabla $ n se koristi za zadržavanje vrijednosti svakog retka. Sada ćemo pomoću while petlje čitati svaki redak iz datoteke s određenim brojem retka.
#!/bin/bashnaziv datoteke='OS.txt'
n=1
dok čitaticrta;
čini
# za čitanje svakog retka
izbaciti 'Distribucijska linija OS br.$ n:linija $'
n= $((n+1))
učinjeno < $ naziv datoteke
Spremite datoteku s imenom OSinfo.sh i upišite sljedeću naredbu na terminalu da biste pokrenuli gornju bash skriptu.
Sada pokrenite naredbu cat za pregled izvornog sadržaja datoteke.
$mačkaOS.txt
Alternativna metoda za čitanje datoteka
Korištenje prosljeđivanja naziva datoteke iz naredbe
U bash datoteku morate dodati sljedeću skriptu koda. U ovoj skripti moramo uzeti naziv datoteke kao argument. Prvo, vrijednost argumenta čita varijabla $ 1 koja ima naziv datoteke za čitanje. Provjerit će postoji li naziv datoteke na navedenom mjestu, a zatim pomoću petlje while čita datoteku redak po redak slično prethodnom primjeru.
#!/bin/bashnaziv datoteke=1 USD
dok čitaticrta;čini
# čitanje svakog retka
izbaciti linija $
učinjeno < $ datoteku.txt
Spremite gornju skriptu s imenom 'Readline.sh' i izvedite sljedeću naredbu na terminalu za pokretanje gore spomenute skripte:
U gornjem ispisu primijetit ćete da datoteka 'OSinfo.txt' prolazi kao argument, a sadržaj 'OSinfo.txt' bit će prikazan nakon uklanjanja dodatnih razmaka. Izvorni sadržaj datoteke možete prikazati pokretanjem 'cat OSinfo.txt'.
Zaključak
U ovom smo članku raspravljali o tome kako čitati retke pomoću while petlje u bash programiranju. Implementirali smo različite metode pomoću bash skripte ili jednostavno možete koristiti tekstualnu datoteku za čitanje datoteke redak po redak. Ako ste zainteresirani saznati više primjera, onda pomoću gore navedene sintakse možete izvršiti i na svom sustavu. Nadam se da vam se svidio ovaj vodič i da će biti jedinstven za vas. Javimo u slučaju bilo kakve greške.