Bash mens du leser linjen

Bash mens du leser linjen
Når du jobber med bashskript, kan det hende du må lese en fillinje for linje. La oss forklare med et eksempel. Du har noen data i en tekstfil som skal utføres eller behandles ved å bruke et skript. Så å kjøre et bash -skript for å behandle en tekstfil er mye annerledes. Du må følge en spesifisert syntaks for å lese en fillinje for linje. Denne artikkelen vil hjelpe deg med å lese en linje fra en fil ved å bruke While Loop in Bash.

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'

Centos
Ubuntu
Debian
Linuxmint
mens 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.