Basissyntaxis van terwijl leesregel
De volgende syntaxis wordt gebruikt voor bash-shell om een bestand te lezen met behulp van een while-lus:
terwijl lezen -Rlijn;
doen
gooide uit '$lijn';
gedaan <Invoer bestand
De optie '-r' in de bovengenoemde syntaxis doorgegeven aan leesopdracht die voorkomt dat de backslash wordt geïnterpreteerd. De optie 'input_file' heeft de naam vertegenwoordigd van uw bestand dat u wilt openen met behulp van de opdracht 'read'.
Het interne veldscheidingsteken, afgekort als IFS, kan worden gebruikt voordat het leescommando wordt ingesteld op de null-tekenreeks die voorkomt dat voorloop- of volgspaties worden bijgesneden.
terwijl IFS=lezen -Rlijn;
doen
gooide uit $lijn;
gedaan <Invoer bestand
Open de terminal met de sneltoets Ctrl + Alt + t en voer de volgende opdrachten erop uit.
Voorbeeld # 1: Bestand lezen regel voor regel
Laten we een voorbeeld nemen waarin we veronderstellen dat we een bestand met de naam OS.txt hebben dat de namen van alle belangrijke Linux-distributies bevat. Als u een bestand wilt lezen zonder het 'cat'-commando te gebruiken, kunt u voor dit doel het volgende commando uitvoeren om de specifieke taak uit te voeren. We zullen de while-lus gebruiken die elke regel uit het bestand OS.txt leest en de inhoud in elke stap opslaat in een variabele $regel die u later kunt weergeven.
Plak de volgende namen van Linux-distributies in OS.txt
CentOS
Ubuntu
Debian
LinuxMint $terwijl lezenlijn;
doen
gooide uit $lijn;
gedaan <OS.txt
Van de bovenstaande opdracht krijgt u het volgende antwoord in het terminalvenster:
Voorbeeld #2: Bestand lezen met het bash-script
Maak een bash-bestand en voeg vervolgens de onderstaande code toe aan dit bestand om de inhoud van het bestand te lezen. U kunt het vorige tekstbestand opslaan in een nieuwe variabele $filename en variabele $n wordt gebruikt om de waarde van elke regel te behouden. Nu zullen we met behulp van de while-lus elke regel uit een bestand met een bepaald regelnummer lezen.
#!/bin/bashbestandsnaam='OS.txt'
N=1
terwijl lezenlijn;
doen
# voor lees elke regel
gooide uit 'OS-distributielijnnr.$n:$lijn'
N= $((n+1))
gedaan < $bestandsnaam
Sla het bestand op met de naam OSinfo.sh en typ de volgende opdracht op de terminal om het bovenstaande bash-script uit te voeren.
$bashOSinfo.sh
Voer nu de opdracht cat uit om de originele bestandsinhoud te bekijken.
$katOS.txt
Alternatieve methode voor het lezen van bestanden
Doorgeven van bestandsnaam van een commando
In een bash-bestand moet u het volgende codescript toevoegen. In dit script moeten we een bestandsnaam als argument nemen. Eerst wordt de waarde van een argument gelezen door een $1-variabele die een bestandsnaam heeft om te lezen. Het zal controleren of de bestandsnaam bestaat op de opgegeven locatie en vervolgens met behulp van de while-lus een bestand regel voor regel lezen, vergelijkbaar met het vorige voorbeeld.
#!/bin/bashbestandsnaam=$ 1
terwijl lezenlijn;doen
# elke regel lezen
gooide uit $lijn
gedaan < $bestand.tekst
Sla het bovenstaande script op met de naam 'Readline.sh' en voer de volgende opdracht uit op de terminal om het bovengenoemde script uit te voeren:
In de bovenstaande uitvoer ziet u dat het bestand 'OSinfo.txt' als argument wordt doorgegeven en dat de inhoud van 'OSinfo.txt' wordt weergegeven na het verwijderen van extra spaties. U kunt de originele bestandsinhoud weergeven door 'cat OSinfo.txt' uit te voeren.
Conclusie
In dit artikel hebben we besproken hoe je regels kunt lezen met behulp van de while-lus in bash-programmering. We hebben verschillende methoden geïmplementeerd met behulp van het bash-script of u kunt eenvoudig een tekstbestand gebruiken om een bestand regel voor regel te lezen. Als u geïnteresseerd bent om meer voorbeelden te leren, kunt u de bovengenoemde syntaxis ook op uw systeem uitvoeren. Ik hoop dat je deze tutorial leuk vond en uniek voor jou zou zijn. Laat het ons weten in geval van een fout.