Grunnleggende syntaks av mens du er lest linje
Følgende syntaks brukes til Bash Shell for å lese en fil som bruker mens Loop:
Mens du er lest -r linje;
gjøre
ekko "$ linje";
Ferdig < input.file
Alternativet '-r' i den ovennevnte syntaksen som er gitt for å lese kommandoen som unngår at tilbakeslaget slipper ut fra å bli tolket. Alternativet "input_file" har representert navnet på filen din du vil ha tilgang til ved å bruke "Read" -kommandoen.
Den interne feltskilleren forkortet som Ifs kan brukes før lesekommandoen er satt til nullstrengen som forhindrer at det å lede eller etterpå hvittstedet blir trimmet.
Mens IFS = Les -R -linjen;
gjøre
ekko $ linje;
Ferdig < input.file
Åpne terminalen ved hjelp av 'Ctrl + alt + t' snarvei og kjør deretter følgende kommandoer på den.
Eksempel 1: Filleselinje for linje
La oss ta et eksempel der antar at vi har en fil som heter 'OS.tekst' som inneholder navnene på alle viktige Linux -distribusjoner. Hvis du vil lese en fil uten å bruke 'katt' Kommando, for dette formålet kan du utføre følgende kommando for å utføre den aktuelle oppgaven. Vi vil bruke mens Loop som vil lese hver linje fra filen 'OS.tekst' og lagrer innholdet i hvert trinn i en variabel $ linje som du kan vise senere.
Lim inn følgende navn på Linux -distribusjoner i 'OS.tekst'
Centosmens du leser linjen;
gjøre
ekko $ linje;
Ferdig < OS.txt
Fra kommandoen ovenfor vil du få følgende svar på terminalvinduet:
Eksempel 2: Lesefil ved hjelp av bashskriptet
Opprett en bash-fil og legg deretter til den under-nevnte koden i denne filen for å lese filinnholdet. Du kan lagre den forrige tekstfilen i en ny variabel $ filnavn og variabel $ n brukes til å beholde verdien av hver linje. Nå, ved å bruke mens loopen, vil vi lese hver linje fra en fil med et bestemt linjenummer.
#!/bin/bash
filnavn = 'OS.tekst'
n = 1
mens du leser linjen;
gjøre
# For å lese hver linje
ekko "OS distribusjonslinje nei. $ n: $ linje "
n = $ ((n+1))
Ferdig < $filename
Lagre filen med et navn 'Osinfo.sh ' og skriv inn følgende kommando på terminalen for å kjøre ovennevnte bashskript.
$ Bash Osinfo.sh
Kjør nå CAT -kommandoen for å se det originale filinnholdet.
$ katt os.tekst
Alternativ metode for fillesing
Bruke bestått filnavn fra en kommando
I en bash -fil må du legge til følgende kodeskript. I dette skriptet må vi ta et filnavn som et argument. For det første blir verdien av et argument lest av en $ 1 variabel som har et filnavn for lesing. Den vil sjekke at filnavn eksisterer på det spesifiserte stedet og deretter ved å bruke mens Loop leste en fillinje for linje som ligner på forrige eksempel.
#!/bin/bash
filnavn = $ 1
Hvis [[[ ! -f $ filnavn]]; deretter
ekko "Feil, du må oppgi et filnavn som en kommandolinjeparameter"
exit
fi
mens du leser linjen; gjøre
# Lesing av hver linje
ekko $ linje
Ferdig < $filename
Lagre skriptet ovenfor med navngitt 'Readline.sh ' og utfør følgende kommando på terminalen for å kjøre det ovennevnte skriptet:
$ Bash Readline.sh os.tekst
Du kan se parameteren ble brukt som $ filnavn, og les linje for linje med mens du leser linjen Syntaks fra parameteren som leveres på kommandolinjen.
Konklusjon
I denne artikkelen har vi diskutert hvordan du kan lese linjer ved å bruke While Loop in Bash -programmering. Vi har implementert forskjellige metoder ved hjelp av bash -skriptet, eller du kan ganske enkelt bruke en tekstfil til å utføre å lese en fillinje for linjeoppgave. Hvis du er interessert i å lære flere eksempler, kan du også bruke ovennevnte syntaks du kan utføre på systemet ditt. Jeg håper du likte denne opplæringen og ville være unik for deg. La oss vite i tilfelle feil.