Cum se folosește BASH pentru Loop



Încercați Instrumentul Nostru Pentru Eliminarea Problemelor

Unul dintre cele mai simple trucuri atunci când creați scripturi bash implică realizarea unei bucle, astfel încât să puteți avea o anumită sarcină executată automat de mai multe ori. În cele din urmă, bucla va atinge o stare de testare prestabilită și va înceta brusc să se execute. Bucle ca acestea vor funcționa perfect în bash pe Linux și macOS, precum și în shell-ul bash din Windows 10 și chiar în diferite shell-uri din FreeBSD. Bineînțeles, puteți scrie orice comandă preferați în orice buclă și puteți menține orice proces în orice perioadă de timp doriți. Deși vom scrie câteva bucle extrem de simple, puteți folosi aceste abilități pentru a crea orice tip de scripturi doriți.



Există multe modalități de a începe să scrieți un script, dar pentru această discuție vom presupune că ați deschis un prompt de comandă fie căutând terminalul pe Dash, făcând clic pe acesta în meniurile KDE, MATE, LX sau Whisker sau ținând apăsate Ctrl, Alt și T în același timp. În timp ce vom discuta vi / vim și nano în calitate de editori, problema editorului de utilizat este destul de personală și puteți lucra cu orice vă simțiți confortabil.



Metoda 1: Bucla până

Poate că cea mai de bază buclă din bash este bucla până. Va continua să execute comenzi până când condiția de testare pe care ați stabilit-o devine reală. Vom presupune că ați folosit fie nano, fie vi pentru a deschide un fișier inexistent numit until.sh și sunteți gata să inserați text nou în acesta. Vom face doar ceva care contează până la 20 în terminalul dvs. pentru a vă ușura la început.



Începeți prin a tasta următoarele:

#! / bin / bash

n = 0



până la [$ n -gt 20]

do

ecou $ n

((n ++))

Terminat

Dacă utilizați nano, salvați-l ținând apăsat Ctrl și apoi apăsând O și, în cele din urmă, X pentru a ieși. Utilizatorii vi vor dori să împingă escape, apoi tastați: wq pentru a salva și a renunța.

Următorul tip chmod + x untilLoop la prompt pentru al face executabil și apoi tastați ./până laLoop să-l ruleze. Odată ce rulează, bucla va continua să tipărească numere noi pe terminal până când variabila n ajunge la 20.

Apropo, prima linie spune mediului dvs. ce shell să se încarce atunci când lucrați cu aceste scripturi. Unii programatori recomandă să folosiți numai #! / Bin / sh doar pentru a vă asigura că scriptul dvs. respectă anumite standarde POSIX, dar aceste scripturi simple nu ar trebui să aibă nicio problemă cu rularea pe marea majoritate a sistemelor moderne.

Metoda 2: pentru buclă

O buclă for aruncă o privire asupra fiecărui element dintr-o listă dată și apoi efectuează un set dat de comenzi din lista respectivă. Vom crea unul care să tipărească unele nume de sisteme de operare, dar rețineți din nou că ați putea face orice dacă doriți.

Tastați fie nano forLoop sau noi pentruLoop la promptul de comandă și începeți să introduceți următorul script. Utilizatorii vi vor trebui să intre în modul de inserare înainte de a face acest lucru.

#! / bin / bash

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

pentru unix în $ unices

do

ecou $ unix

Terminat

Salvați din nou fișierul folosind fie metoda Ctrl + O și apoi metoda Ctrl + X în nano, fie metoda Esc atunci: wq în vi înainte de a emite comanda chmod + x forLoop pentru a-l face executabil. După ce ați terminat, rulați-l tastând ./forLoop la prompt. Bucla for forțează comanda echo să lucreze pe rând la fiecare dintre elementele din variabila unices. Ați putea, din nou, să înlocuiți lista respectivă cu orice argument și să înlocuiți ecoul cu orice comandă pentru a automatiza procesele lungi.

Metoda 3: Bucla while

Începeți să editați un al treilea fișier numit whileLoop folosind nano, vi sau oricare alt editor pe care doriți să îl utilizați. Dacă preferați să utilizați un editor de text grafic, atunci puteți face acest lucru și cu oricare dintre aceste proiecte, atâta timp cât vă asigurați că puneți fișierul în același director pe care îl lucrați din interiorul liniei de comandă. .

În acest fișier, veți dori să adăugați liniile:

#! / bin / bash

n = 0

în timp ce [$ n -le 20]

do

ecou $ n

((n ++))

Terminat

Salvați fișierul în același mod în care le-ați salvat pe celelalte și apoi ieșiți din editorul de text. După ce ați ieșit, emiteți comanda chmod + x whileLoop pentru a vă permite să-l executați și apoi să rulați ./ WhileLoop să-l ruleze. Veți vedea aceeași ieșire care a ieșit din scriptul untilLoop din prima metodă, deoarece contează de la 0 la 20 în mai mult decât probabil o fracțiune de secundă.

Aceasta este o demonstrație excelentă a faptului că există mai multe modalități de a face lucruri ori de câte ori lucrați cu bucle în acest mod. Deși din punct de vedere tehnic nu există o cale greșită de a face acest lucru, probabil veți întâlni autori de scenarii care susțin că ar trebui să vă scrieți scripturile mai aproape de modul în care limbajul de programare C face lucrurile sau, alternativ, alții ar putea sugera că nu ar trebui să faceți acest lucru. Sincer, există probabil multe modalități corecte de a rezolva o problemă.

Nu ezitați să vă ștergeți scripturile după ce ați terminat antrenamentele cu ele.

3 minute citite