BASH (care reprezintă Bourne Again Shell) este un limbaj de scripting utilizat de majoritatea sistemelor de operare Linux și UNIX.
Puteți rula comenzile BASH într-o fereastră terminală una după alta sau puteți adăuga comenzile într-un fișier text pentru a produce un script shell.
Lucrul grozav despre scrierea scripturilor shell este că le puteți rula din nou și din nou. De exemplu, imaginați-vă că trebuie să adăugați un utilizator la un sistem, să stabiliți permisiunile și să vă gestionați mediul de pornire. Puteți scrie comenzile pe o bucată de hârtie și le puteți rula în timp ce adăugați noi utilizatori sau puteți scrie un singur script și doar să treceți parametrii în acel script.
Limbile de scriere, cum ar fi BASH, au construiri de programare similare cu alte limbi. De exemplu, puteți utiliza parametrii de import pentru a obține intrarea de la tastatură și a le stoca ca variabile. Apoi, puteți obține scriptul pentru a efectua o anumită acțiune bazată pe valoarea parametrilor de intrare.
O parte esențială a oricărui limbaj de programare și scriere este capacitatea de a rula din nou și din nou aceeași codă.
Există o serie de moduri de a repeta codul (cunoscut și ca bucle). În acest ghid, vi se va arăta cum să scrieți o buclă "pentru".
A pentru buclă repetă o anumită secțiune a codului de peste și peste. Sunt utile pentru ca o serie de comenzi să poată continua să funcționeze până când o anumită condiție este îndeplinită, după care se vor opri.
În acest ghid, vi se vor arăta cinci modalități de utilizare a buclă for pentru un script BASH.
Înainte de a începe
Înainte de a începe cu exemplele pentru buclă, trebuie să deschideți o fereastră de terminal și urmați acești pași:
-
introduce script-uri mkdir (aflați mai multe despre mkdir aici).
-
introduce cd script-uri (aceasta schimbă directorul la script-uri ).
-
introduce nano examplen.sh (Unde n este exemplul pe care lucrați).
-
Introduceți scenariul.
-
presa CTRL + O pentru a salva și CTRL + X a iesi.
-
Alerga bash examplen.sh (din nou, cu n fiind exemplul cu care lucrați).
Cum să faceți buclă printr-o listă
#! / bin / bashfor numărul în 1 2 3 4 5doecho $ numberdoneexit 0
Modul BASH de utilizare a buclelor "for" este oarecum diferit față de modul în care majoritatea limbilor de programare și de scripting se ocupă de "bucle". Să rupem scena. Într-o buclă BASH "pentru" toate, afirmațiile între do și Terminat sunt efectuate o dată pentru fiecare element din listă. În exemplul de mai sus, lista este tot ce vine după cuvânt în (adică 1 2 3 4 5). De fiecare dată când bucla este repetată, următoarea valoare din listă este inserată în variabila specificată după cuvânt "pentru" . În bucla de mai sus, se numește variabila număr . Instrucțiunea de ecou este utilizată pentru a afișa informații pe ecran. Prin urmare, acest exemplu are numerele de la 1 la 5 și le transmite unul câte unul pe ecran: Problema cu exemplul de mai sus este că dacă doriți să procesați o listă mai mare (de exemplu 1 la 500), ar fi nevoie de vârste pentru a introduce toate numerele în primul rând. Acest lucru ne aduce la al doilea exemplu care arată modul de specificare a unui început și a unui punct final: #! / bin / bashfor numărul din {1..10} doecho "$ number" doneexit 0
Regulile sunt în esență aceleași. Valorile după cuvântul " în" alcătuiesc lista pentru a itera și fiecare valoare din listă este plasată în variabila (adică numărul) și de fiecare dată când bucla iterează, instrucțiunile de la do și Terminat Sunt facute. Principala diferență este modul în care se formează lista. Parantezele curbate {} denotă în principiu un interval, iar intervalul, în acest caz, este de la 1 la 10 (cele două puncte separă începutul și sfârșitul unui interval). Acest exemplu, prin urmare, trece prin fiecare număr între 1 și 10 și transmite numărul către ecran după cum urmează: Aceeași buclă ar fi putut fi scrisă astfel, cu o sintaxă identică cu primul exemplu: pentru numărul în 1 2 3 4 5 6 7 8 9 10 Exemplul precedent a arătat cum să realizăm o buclă între punctul de început și sfârșit, deci acum ne vom uita la modul de a sări peste numerele din interval. Imaginați-vă că doriți să faceți buclă între 0 și 100, dar să afișați doar fiecare al zecelea număr. Următorul scenariu arată cum se face acest lucru: #! / bin / bashfor numărul din {0..100..10} doecho "$ number" doneexit 0
Regulile sunt în esență aceleași. Există o listă, o variabilă și un set de declarații care trebuie efectuate între do și Terminat . Lista de această dată arată astfel: {0..100..10}. Primul număr este 0, iar numărul de sfârșit este 100. Al treilea număr (10) este numărul de elemente din listă pe care le va sări peste. Exemplul de mai sus, prin urmare, afișează următoarea ieșire: Modul BASH de scriere pentru bucle este ușor ciudat în comparație cu alte limbi de programare. Cu toate acestea, puteți scrie o buclă pentru un stil similar cu limbajul de programare C, cum ar fi: # $ / bin / bashfor ((numărul = 1; numărul <100; numărul ++)) {if (($ number% 5 == 0)) thenecho "$ divisible by 5"
Buclele pornesc prin setarea numărului de variabile la 1 (numărul = 1 ). Bucla va păstra iterarea în timp ce valoarea unui număr este mai mică de 100 ( număr <100 ). Valoarea a număr schimbări prin adăugarea lui 1 după fiecare repetare ( numărul ++ ). Tot ceea ce se întâmplă între acoladele curbate se realizează prin fiecare iterație a buclei. Bitul dintre bretele verifică valoarea a număr , o împarte cu 5 și compară restul cu 0. Dacă restul este 0, atunci numărul este divizibil cu 5 și apoi este afișat pe ecran. De exemplu: Dacă doriți să modificați mărimea pasului iterației, puteți modifica secțiunea număr ++ număr = număr + 2 , Numărul = numărul + 5 , sau Numărul = numărul + 10 etc. Acest lucru poate fi redus în continuare la număr + = 2 sau număr + = 5 . Pentru bucle pot face mai mult decât itera liste de numere. Puteți utiliza de fapt ieșirea altor comenzi ca listă. Următorul exemplu arată modul de conversie a fișierelor audio de la MP3 la WAV: #! / Bin / bashpentru fișier în ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" făcut
Lista din acest exemplu este fiecare fișier cu extensia .MP3 din dosarul curent, iar variabila este a fişier . mpg comanda convertește fișierul MP3 în WAV. Cu toate acestea, probabil că trebuie să instalați mai întâi acest lucru utilizând managerul de pachete.
Cum să faceți buclă între un punct de început și un punct final
Cum să treci numerele într-un interval
O căutare mai tradițională pentru buclă
Un exemplu practic