Grunnleggende syntaks for mens du leser linjen
Følgende syntaks brukes for bash shell for å lese en fil med while loop:
samtidig som lese -rlinje;
gjøre
kastet ut '$ linje';
gjort <input.file
Alternativet '-r' i ovennevnte syntaks ble sendt til å lese kommando som unngår at tilbakeslagstreken slipper unna å bli tolket. Alternativet ‘input_file’ har representert navnet på filen du vil ha tilgang til ved å bruke ‘read’ -kommandoen.
Den interne feltseparatoren forkortet til IFS kan brukes før read -kommandoen settes til nullstrengen som forhindrer at ledende eller etterfølgende mellomrom trimmes.
samtidig som IFS=lese -rlinje;
gjøre
kastet ut $ linje;
gjort <input.file
Åpne terminalen ved hjelp av Ctrl + Alt + t snarvei og kjør deretter følgende kommandoer på den.
Eksempel # 1: Fillesing linje for linje
La oss ta et eksempel der vi antar at vi har en fil som heter OS.txt som inneholder navnene på alle viktige Linux -distribusjoner. Hvis du vil lese en fil uten å bruke kommandoen ‘cat’, kan du for dette formålet utføre følgende kommando for å utføre den aktuelle oppgaven. Vi bruker while -løkken som vil lese hver linje fra filen OS.txt og lagre innholdet i hvert trinn i en variabel $ -linje som du kan vise senere.
Lim inn følgende navn på Linux -distribusjoner i OS.txt
CentOS
Ubuntu
Debian
LinuxMint $samtidig som leselinje;
gjøre
kastet ut $ linje;
gjort <OS.txt
Fra kommandoen ovenfor får du følgende svar på terminalvinduet:
Eksempel # 2: Lese fil ved hjelp av bash -skriptet
Lag en bash-fil, og legg deretter til koden nedenfor i denne filen for å lese filinnholdet. Du kan lagre den forrige tekstfilen i en ny variabel $ filnavn og variabel $ n brukes til å beholde verdien på hver linje. Ved å bruke mens -løkken vil vi lese hver linje fra en fil med et bestemt linjenummer.
#!/bin/bashfilnavn='OS.txt'
n=1
samtidig som leselinje;
gjøre
# for å lese hver linje
kastet ut 'OS -distribusjonslinjenr.$ n:$ linje'
n= $((n+1))
gjort < $ filnavn
Lagre filen med navnet OSinfo.sh og skriv inn følgende kommando på terminalen for å kjøre bash -skriptet ovenfor.
$bashOSinfo.sh
Kjør nå cat -kommandoen for å se det originale filinnholdet.
$kattOS.txt
Alternativ metode for fillesing
Bruke passerende filnavn fra en kommando
I en bash -fil må du legge til følgende kodescript. I dette skriptet må vi ta et filnavn som et argument. Først leses verdien av et argument av en $ 1 -variabel som har et filnavn for lesing. Det vil sjekke at filnavnet eksisterer på det angitte stedet, og deretter bruke mens loopet leser en fil linje for linje som ligner på det forrige eksemplet.
#!/bin/bashfilnavn=$ 1
samtidig som leselinje;gjøre
# leser hver linje
kastet ut $ linje
gjort < $ fil.tekst
Lagre skriptet ovenfor med navnet 'Readline.sh' og utfør følgende kommando på terminalen for å kjøre skriptet ovenfor:
I utdataene ovenfor vil du se at filen 'OSinfo.txt' passerer som et argument, og innholdet i 'OSinfo.txt' vil bli vist etter at du har fjernet ekstra mellomrom. Du kan vise det originale filinnholdet ved å kjøre 'cat OSinfo.txt'.
Konklusjon
I denne artikkelen har vi diskutert hvordan du leser linjer ved hjelp av while -løkken i bash -programmering. Vi har implementert forskjellige metoder ved å bruke bash -skriptet, eller du kan ganske enkelt bruke en tekstfil til å utføre en filoppgave for å lese en fil. Hvis du er interessert i å lære flere eksempler, kan du bruke ovennevnte syntaks også på systemet ditt. Jeg håper du likte denne opplæringen og ville være unik for deg. Gi oss beskjed ved feil.