Skip to main content

Hoe Bash WHILE-Loops te schrijven

Linux Tutorial for Beginners: Introduction to Linux Operating System (April 2025)

Linux Tutorial for Beginners: Introduction to Linux Operating System (April 2025)
Anonim

U kunt een reeks opdrachten uitvoeren door ze in een scriptbestand te schrijven en vervolgens uit te voeren.

Een scriptbestand is gewoon een tekstbestand, meestal met de extensie .SH, die een reeks instructies bevat die ook kan worden uitgevoerd vanaf de opdrachtregel (shell).

While Loop-voorbeelden

Hieronder ziet u een voorbeeld van een while-lus. Als dit script wordt uitgevoerd, worden de nummers 1 tot en met 9 op het scherm afgedrukt. De while-statement geeft u meer flexibiliteit bij het specificeren van de beëindigingsvoorwaarde dan de for-loop.

U kunt bijvoorbeeld het vorige script een oneindige lus maken door de ophogingsinstructie "((tel ++))" weg te laten:

De instructie "sleep 1" onderbreekt de uitvoering gedurende 1 seconde bij elke iteratie. Gebruik de sneltoets Ctrl + C om het proces te beëindigen.

Je kunt ook een oneindige lus maken door een dubbele punt als voorwaarde te plaatsen:

Als u meerdere voorwaarden in de while-lus wilt gebruiken, moet u de notatie met de dubbele vierkante haakjes gebruiken:

In dit script wordt de variabele "done" geïnitialiseerd naar 0 en vervolgens ingesteld op 1 als de telling 5 bereikt. De lusvoorwaarde geeft aan dat de while-lus zal doorgaan zolang "count" kleiner is dan negen en "done" gelijk is naar nul. Daarom gaan de lussen uit als de telling gelijk is aan 5.

De "&&" betekent logisch "en" en "||" betekent logisch "of".

Een alternatieve notatie voor de conjuncties "en" en "of" in condities is "-a" en "-o" met enkele vierkante haken. De bovenstaande voorwaarde:

… kan worden herschreven als:

Het lezen van een tekstbestand gebeurt meestal met een while-lus. In het volgende voorbeeld leest het bash-script de inhoud regel voor regel van een bestand met de naam "inventory.txt:"

De eerste regel wijst de naam van het invoerbestand toe aan de variabele "FILE". De tweede regel slaat de "standaardinvoer" op in de bestandsbeschrijving "6" (het kan een waarde tussen 3 en 9 zijn). Dit wordt gedaan zodat "standaardinvoer" kan worden hersteld naar bestandsdescriptor "0" aan het einde van het script (zie de instructie "exec 0 In de derde regel wordt het invoerbestand toegewezen aan bestandsdescriptor" 0 ", die wordt gebruikt voor standaardinvoer De "lees" -instructie leest dan een regel uit het bestand op elke iteratie en wijst deze toe aan de "line1" -variabele.

Om een ​​while-lus vroegtijdig te verlaten, kunt u de break-instructie als volgt gebruiken:

De break-instructie slaat de uitvoering van het programma over naar het einde while-lus en voert alle instructies die erop volgen uit. In dit geval is de verklaring "echo voltooid".

De instructie continue daarentegen slaat alleen de rest van de while-lusinstructie van de huidige iteratie over en springt direct naar de volgende iteratie:

In dit geval wordt de instructie "continue" uitgevoerd wanneer de variabele "count" 5 bereikt. Dit betekent dat de daaropvolgende instructie (echo "$ count") niet wordt uitgevoerd op deze iteratie (wanneer de waarde van "count" 5 is).