10 exemple Bash For Loop cu explicații

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.

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.

  Cum să configurați autentificarea cu doi factori pe Firefox

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.

  20 de instrumente open-source pot ajuta cercetarea în vindecarea COVID-19

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?