Cum de a scrie o bucla BASH "pentru"

Cum se utilizează buclă BASH "pentru" în scripturile shell

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:

  1. Introduceți scripturile mkdir ( aflați mai multe despre mkdir aici )
  2. Introduceți scripturile cd (aceasta schimbă directorul în scripturi )
  3. Introduceți nano examplen.sh (unde n este exemplul pe care lucrați)
  4. Introduceți scenariul
  5. Apăsați CTRL + O pentru a salva și CTRL + X pentru a ieși
  6. Executați bash examplen.sh (din nou, cu n fiind exemplul cu care lucrați)

Cum să faceți buclă printr-o listă

#! / Bin / bash
pentru numărul în 1 2 3 4 5
do
echo $ număr
Terminat
ieșire 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 scenariul ...

Într-o buclă BASH "pentru" toate, instrucțiunile de la done și done sunt efectuate o dată pentru fiecare element din listă.

În exemplul de mai sus, lista este tot ce vine după cuvântul din (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ântul "pentru" . În bucla de mai sus, variabila este numită 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:

Cum să faceți buclă între un punct de început și un punct final

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 / bash
pentru numărul din {1..10}
do
echo "număr $"
Terminat
ieșire 0

Regulile sunt în esență aceleași. Valorile după cuvântul " in" alcătuiesc lista pentru a itera și fiecare valoare din listă este plasată în variabila (adică numărul), iar de fiecare dată când bucla se repetă, se fac declarațiile între done și done .

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

Cum să treci numerele într-un interval

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 / bash
pentru numărul din {0..100..10}
do
echo "număr $"
Terminat
ieșire 0

Regulile sunt în esență aceleași. Există o listă, o variabilă și un set de instrucțiuni care trebuie efectuate între executări și terminate . 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:

O căutare mai tradițională pentru buclă

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 / bash
pentru ((numărul = 1; numărul <100; numărul ++))
{
dacă (($ număr% 5 == 0))
apoi
echo "numărul de $ este divizibil de 5"
Fi
}
ieșire 0

Buclele încep prin setarea numărului de variabile la 1 (număr = 1 ). Bucla va păstra iterarea în timp ce valoarea unui număr este mai mică de 100 ( număr <100 ). Valoarea numărului se schimbă prin adăugarea lui 1 după fiecare iterație ( numărul ++ ).

Tot ceea ce se întâmplă între acoladele curbate se realizează prin fiecare iterație a buclei.

Bitul dintre brațele verifică valoarea unui număr , îl î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ărul ++ pentru a fi număr = număr + 2 , număr = număr + 5 sau număr = număr + 10 etc.

Aceasta poate fi redusă și mai mult la numărul + = 2 sau numărul + = 5 .

Un exemplu practic

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 / bash

Lista din acest exemplu este fiecare fișier cu extensia .MP3 din dosarul curent, iar variabila este un fișier .

Comanda mpg 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.