For Loop este o parte integrantă a oricărui limbaj de programare. Permite programelor să parcurgă un anumit număr de articole.
De exemplu, dacă doriți să parcurgeți o listă sau o matrice de „n” articole, ați folosi o buclă for. Să luăm un exemplu simplu:
1Violet2Indigo3Albastru4Verde Tabel Curcubeu
Pentru a efectua orice acțiuni sau pentru a repeta elementele din tabelul de mai sus, avem nevoie de o buclă For.
Cuprins
Bash For Loop
Într-un script bash, sintaxa For Loop este următoarea:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
Bash For Loop este destul de simplu. Prima linie #!/bin/bash indică faptul că codul este un script bash. VAR reprezintă variabila temporară utilizată pentru buclă. N indică numărul maxim de iterații. „do” și „terminat” pornesc și, respectiv, opresc bucla. Acțiunile sunt comenzile care se execută în buclă.
Putem executa Bash For Loop cu diferite variabile, cum ar fi listă, șiruri de caractere, numere întregi și matrice. Acest articol va arăta câteva exemple comune ale buclei Bash For.
Puteți executa direct aceste programe pe linia de comandă bash sau le puteți salva într-un fișier și executați fișierul folosind comanda Bash filename.sh.
Citirea listei statice
Luați în considerare următoarea listă – rainbowColorList = Violet, Indigo, Albastru, Verde, Galben, Portocaliu, Roșu
Putem imprima lista de șiruri de mai sus folosind Bash For Loop, după cum urmează:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
Rezultatul va fi lista de articole dintr-o nouă linie.
#Output Violet Indigo Blue Green Yellow Orange Red
Citirea unui Array
Sintaxa pentru declararea unui tablou este diferită. Folosiți paranteze pentru fiecare element (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
„@” este folosit pentru a itera prin fiecare element din matrice.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
De asemenea, putem folosi For Loop pentru a imprima indecșii și elementele matricei.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Rețineți că folosim „!” în buclă pentru a obține indexul elementului.
Iterarea intervalului de numere
Putem folosi Bash For Loop pentru a itera pe o serie de numere.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
„..” indică o serie de numere.
#Output 10 9 8 7 6 5 4 3 2 1 0
De asemenea, putem sări peste numerele de numărare specificând intervalul.
În exemplul de mai jos, sărim numărarea cu 3.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
Programul de mai sus începe cu 30 ca prim număr și numără înapoi până la 0. Ultimul parametru din bucla for „3” specifică numărul de sărituri.
#Output 30 27 24 21 18 15 12 9 6 3 0
Șiruri și caractere
Putem face o mulțime de operațiuni interesante cu șiruri cu Bash For Loop.
De exemplu, putem citi fiecare caracter al unui șir folosind operatorul „seq” într-o buclă For:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Rețineți că „seq” ar trebui să înceapă cu 1 pentru a obține primul caracter.
#Output W e l c o m e
De asemenea, putem tipări șirurile separate prin spațiu unul câte unul:
#read each word from a sentence mysentence="Welcome to tipstrick.ro. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to tipstrick.ro. One stop hub for all techies
Expresii
Similar oricărui alt limbaj de programare precum Java, putem plasa expresii în interiorul unui Bash For Loop.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Citirea argumentelor din linia de comandă
Pentru a citi din argumentele liniei de comandă, folosim comanda „citește”. În exemplul de mai jos, vom obține câteva numere de la utilizator și vom imprima suma folosind Bash For Loop. Folosim variabila total pentru a stoca totalul intermediar și final sau suma numerelor.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
Ieșirea este:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Găsirea numerelor impare-pare
Pentru a găsi numere pare și impare între 1 și 10 (sau orice număr N), ar trebui să folosim condiția if împreună cu Bash for Loop. Pentru a determina un număr par, vom împărți numărul la 2 și, dacă restul este 0, îl vom clasifica ca par, altfel impar.
#declare the list where the even and odd numbers will be sorted and kept evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Rețineți că oferim intervalul ca 10 în exemplul de mai sus. Putem schimba acest număr pentru a obține numere pare și impare între orice interval. De asemenea, puteți încerca să citiți numărul de la utilizator folosind comanda „citește” pe care am învățat-o în secțiunea anterioară.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Buclă infinită
Bucla infinită sau infinită este o buclă care nu se oprește din execuție, iar programul trebuie forțat să nu mai folosească Ctrl+C. Putem crea cu ușurință o buclă infinită folosind ‘; ;’ operator din bucla for:
for (( ; ; )) do echo "Welcome to tipstrick.ro" done
#Output Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro Welcome to tipstrick.ro ^C $
Break Statement
Instrucțiunile Break sunt folosite pentru a rupe din buclă atunci când este îndeplinită o condiție „dacă”.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
În acest exemplu, încercăm să găsim culoarea verde. For-Loop trece prin fiecare culoare și, odată ce culoarea verde este găsită, programul iese din buclă din cauza instrucțiunii break.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Continuare Declarație
Continue este folosit pentru a sări peste bucla curentă și pentru a trece la următoarea pe baza unei anumite condiții. De exemplu, dacă nu doriți să imprimați culoarea „Verde” din programul nostru anterior, putem pune continuare și vor fi afișate toate celelalte culori, cu excepția verde.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Cuvinte finale
Am acoperit cele mai comune utilizări ale unei bucle Bash For, folosind șiruri de caractere, numere întregi, matrice și listă. Dacă învățați Linux, dar aveți o mașină cu Windows 10, puteți utiliza caracteristica WSL și puteți instala Linux pe computerul dvs. Windows.
Apoi puteți utiliza terminalul Linux într-un mod similar cu CMD.
În continuare, puteți consulta Cum să rulați scripturi bash folosind Python?