Sådan bruges BASH for Loop



Prøv Vores Instrument Til At Fjerne Problemer

Et af de mest basale tricks, når man opretter bash-scripts, indebærer at lave en loop, så du kan få en bestemt opgave udført automatisk flere gange. Til sidst vil løkken nå en forudbestemt testtilstand og pludselig ophøre med at udføre. Sløjfer som disse fungerer perfekt i bash på Linux og macOS samt bash shell inde i Windows 10 og endda de forskellige skaller i FreeBSD. Naturligvis kan du skrive den kommando, du foretrækker, i en hvilken som helst sløjfe og holde enhver proces i gang, hvor lang tid du vil. Mens vi skriver nogle ekstremt enkle sløjfer, kan du bruge disse færdigheder til at oprette de slags scripts, du gerne vil have.



Der er mange måder at begynde at skrive et script på, men til denne diskussion antager vi, at du har åbnet en kommandoprompt enten ved at søge efter terminal på Dash ved at klikke på den i menuerne KDE, MATE, LX eller Whisker eller ved at holde Ctrl, Alt og T nede på samme tid. Mens vi diskuterer vi / vim og nano som redaktører, er spørgsmålet om, hvilken editor der skal bruges, ganske personlig, og du kan arbejde med det, du har det godt med.



Metode 1: indtil løkken

Måske er den mest basale loop i bash indtil loop. Det fortsætter med at udføre kommandoer, indtil den testtilstand, du indstiller, bliver sand. Vi antager, at du har brugt enten nano eller vi til at åbne en ikke-eksisterende fil kaldet indtil.sh og er klar til at indsætte frisk tekst i den. Vi laver bare noget, der tæller til 20 i din terminal for at gøre det let i starten.



Start med at skrive følgende:

#! / bin / bash

n = 0



indtil [$ n -gt 20]

gør

ekko $ n

((n ++))

Færdig

Hvis du bruger nano, skal du gemme den ved at holde Ctrl nede og derefter trykke på O og til sidst X for at afslutte. Brugere af vi vil gerne skubbe escape og skriv derefter: wq for at gemme og afslutte.

Næste type chmod + x indtilLoop ved anmodningen om at gøre det eksekverbart og derefter skrive ./untilLoop at køre det. Når den er kørt, fortsætter sløjfen med at udskrive nye numre på din terminal, indtil n-variablen bliver 20.

Forresten fortæller den første linje dit miljø, hvilken skal der skal indlæses, når du arbejder med disse scripts. Nogle programmører anbefaler kun at bruge #! / Bin / sh for at sikre, at dit script overholder visse POSIX-standarder, men disse enkle scripts bør ikke have noget problem at køre på langt de fleste moderne systemer.

Metode 2: For Loop

En for loop ser på hvert element i en given liste og udfører derefter et givet sæt kommandoer på denne liste. Vi laver en, der udskriver nogle operativsystemnavne, men husk igen, at du muligvis kan gøre noget med dette, hvis du vil.

Skriv enten nano forLoop eller vi forLoop ved kommandoprompten og start med at indtaste dette følgende script. Brugere af vi bliver nødt til at gå ind i insert-tilstand, før de gør det.

#! / bin / bash

unices = ’GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix’

for unix i $ enheder

gør

ekko $ unix

Færdig

Gem filen igen ved hjælp af enten Ctrl + O og derefter Ctrl + X-metoden i nano eller Esc og derefter: wq-metoden i vi, før kommandoen udstedes chmod + x forLoop for at gøre det eksekverbart. Når du har det, skal du køre det ved at skrive ./forLoop ved prompten. For-sløjfen tvinger ekkokommandoen til at arbejde på hvert af elementerne i enhedsvariablen igen. Du kan igen udskifte listen med ethvert argument og erstatte ekko med enhver kommando for at automatisere lange processer.

Metode 3: Mens løkken

Begynd at redigere en tredje fil, der hedder whileLoop, ved hjælp af nano, vi eller hvilke andre redaktører du gerne vil bruge. Hvis du foretrækker at bruge en grafisk teksteditor, kan du faktisk gøre det også med et af disse projekter, så længe du sørger for at placere filen i den samme mappe, som du arbejder inde i kommandoprompten. .

Inde i denne fil vil du tilføje linjerne:

#! / bin / bash

n = 0

mens [$ n-le 20]

gør

ekko $ n

((n ++))

Færdig

Gem filen på samme måde, som du gemte de andre, og afslut derefter din teksteditor. Når du er afsluttet, skal du udstede kommandoen chmod + x mens Loop for at give dig mulighed for at udføre det og derefter køre ./ whileLoop at køre det. Du vil se den samme output, der kom ud af indtilLoop-scriptet fra den første metode, da det mere end sandsynligt tæller fra 0 til 20 i et splitsekund.

Dette er en fremragende demonstration af, at der er mere end én måde at gøre ting på, når du arbejder med sløjfer på denne måde. Selvom der teknisk set ikke er nogen forkert måde at gøre det på, vil du sandsynligvis støde på scriptforfattere, der hævder, at du skal skrive dine scripts tættere på den måde, C-programmeringssproget gør ting på, eller alternativt kan andre foreslå, at du ikke skal gøre dette. Ærligt talt er der sandsynligvis mange korrekte måder at løse et problem på.

Slet gerne dine scripts, når du er færdig med at øve dig med dem.

3 minutter læst