Deoarece BASH este un limbaj de linie de comandă, avem o experiență destul de bogată în funcții pentru a folosi abilitățile de programare pentru a efectua sarcini în terminal. Putem folosi bucle și instrucțiuni condiționale în scripturile BASH pentru a efectua unele probleme repetitive și complicate într-un mod programatic simplu. În acest articol, ne vom concentra asupra pentru buclă în scripturile BASH.
În funcție de cazul de utilizare și de problema pe care încearcă să o automatizeze, există câteva moduri de a utiliza bucle.
- Simplu pentru buclă
- Loop for bazat pe interval
- Iterație matrice pentru bucle
- C-Styled for bucle
- Buclă infinită pentru
Simplu pentru buclă
Pentru a executa o buclă for putem scrie următoarea sintaxă:
#!/bin/bash for n in a b c; do echo $n done>
- În prima iterație,
n>ia valoarea a, iar scriptul afișează a. - În a doua iterație,
n>ia valoarea b, iar scriptul afișează b. - În a treia iterație,
n>ia valoarea c, iar scriptul afișează c.

Comanda de mai sus va itera elementele specificate după în cuvânt cheie unul câte unul. Elementele pot fi numere, șiruri de caractere sau alte forme de date.
Loop for bazat pe interval
Putem folosi bucle bazate pe intervale. În acest tip de buclă, putem specifica numărul de început, de oprit și de incrementat la fiecare iterație (opțional) din instrucțiune. Există două moduri în care puteți face acest lucru, și anume prin menționarea valorii de creștere/decrementare și prin creșterea cu una în mod implicit. Sintaxa arată astfel:
#!/bin/bash for n in {1..5}; do echo $n done> 
În codul de mai sus, folosim {} pentru a specifica o serie de numere. În interiorul acoladelor, specificăm punctul de început urmat de două puncte și un punct final. În mod implicit, crește cu unu. Prin urmare, imprimăm 5 numere de la 1 la 5, ambele inclusiv.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
obiect al java
Aici putem vedea că bucla a crescut cu 2 unități, așa cum este menționat în bretele. Astfel, lucrul cu numere este foarte ușor și convenabil. Acesta poate fi folosit și cu caractere alfabetice.
NOTĂ: Nu putem folosi variabile în interiorul acoladelor, așa că va trebui să codificăm valorile. Pentru a folosi variabilele, vedem buclele for tradiționale în stil C în următoarele câteva secțiuni.
Iterație matrice pentru bucle
Putem itera peste matrice convenabil în bash folosind bucle for cu o sintaxă specifică. Putem folosi variabilele speciale din BASH, adică @ pentru a accesa toate elementele din matrice. Să ne uităm la cod:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Putem itera elementele din matrice folosind operatorul @ care primește toate elementele din matrice. Astfel, folosind bucla for, iterăm peste ele unul câte unul. Folosim variabila ${variable_name[@]} în care, acoladele aici extind valoarea variabilei s aici, care este o matrice de șiruri. Folosind operatorul [@] accesăm toate elementele și astfel iterăm peste ele în bucla for. Aici n este iteratorul, prin urmare, putem tipări valoarea sau facem procesarea necesară pe ea.
C-Styled for bucle
După cum s-a spus mai devreme, trebuie să folosim variabilele din buclele for pentru a repeta pe o serie de elemente. Și astfel, buclele for în stil C joacă un rol foarte important. Să vedem cum le folosim.
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

După cum putem vedea, putem folosi dinamic valoarea intervalului de condiții finale. Amintiți-vă că spațiile dintre acoladele duble pot fi intenționate și fac parte din sintaxă. Buclele for în stil C sunt buclele care au 3 părți, iteratorul de inițializare, incrementatorul/decrementatorul și condiția de final.
În sintaxa de mai sus, am inițializat iteratorul/contorul buclei la 1 care poate fi orice după alegere. A doua parte este condiția finală, aici am folosit variabila n care este inițializată înaintea buclei for și astfel folosim simplul $ operator pentru a obține valoarea variabilei. În cele din urmă, avem incrementar/decrementer care schimbă iteratorul/contorul la o valoare care poate fi orice, dar, în exemplu, am folosit operatorul unar (++) pentru a crește valoarea cu una care este echivalentă cu i=i+1 . Astfel putem folosi afirmații precum i+=2, i–,++i, și așa mai departe și așa mai departe.
Buclă infinită pentru
Nu îl folosim des, dar uneori este util să facem anumite lucruri să funcționeze. Sintaxa este destul de ușoară și similară buclelor for în stil C.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
Bucla începe cun>setat la 4. Se incrementeazăn>cu 1 la fiecare iterație și imprimă valoarea luin>pana candn>devine egal cu 9. Cândn>ajunge la 9, thebreak>instrucțiunea este executată și bucla se termină. Scriptul se oprește după tipărirea numerelor de la 4 la 8.
diferenta de date in excel

După cum putem vedea, bucla `for` nu are condiții și aceasta este o buclă pentru totdeauna, dar avem o declarație de condiție pentru a verifica dacă nu va continua pentru totdeauna. Folosim instrucțiunea break în interiorul instrucțiunii if, astfel încât să ieșim din buclă și să nu mai iterăm cu iteratorul. Am folosit incrementarul pentru a incrementa variabila în buclă, altfel bucla este infinită. Desigur, avem nevoie de ceva logică pentru a ieși din buclă și de aceea trebuie să folosim instrucțiunea condiționată if.