În acest subiect, vom înțelege utilizarea pentru buclă în scripturile Bash.
Ca orice alt limbaj de programare, scripting-ul bash shell acceptă, de asemenea, „buclele for” pentru a efectua sarcini repetitive. Ne ajută să repetăm un anumit set de instrucțiuni peste o serie de cuvinte dintr-un șir sau elemente dintr-o matrice. De exemplu, puteți fie să rulați comanda (sau sarcina) UNIX de mai multe ori, fie să citiți și să procesați lista de comenzi folosind o „buclă for”.
Sintaxa buclei For
Putem aplica „for loop” pe scriptul bash în două moduri. O modalitate este „for-in” și o altă modalitate este sintaxa în stil c. Următoarea este sintaxa lui „for loop” în scripting-ul bash shell:
for variable in list do commands done
Sau
for (( expression1; expression2; expression3 )) do commands done
Există câteva puncte cheie ale declarației „for loop”:
- Fiecare bloc de „for loop” din bash începe cu cuvântul cheie „do” urmat de comenzile din interiorul blocului. Declarația „for loop” este închisă de cuvântul cheie „done”.
- Numărul de timp pentru care se va itera o „buclă for” depinde de variabilele din listă declarate.
- Bucla va selecta un element din listă și va atribui valoarea unei variabile care va fi folosită în cadrul buclei.
- După executarea comenzilor între „do” și „done”, bucla se întoarce în partea de sus și selectează următorul articol din listă și repetă întregul proces.
- Lista poate conține numere sau șir etc. separate prin spații.
Unele dintre exemplele de „buclă for” sunt prezentate mai jos pentru a ilustra cum funcționează:
Exemplu de bază „For Loop”.
Bash Script
#!/bin/bash #This is the basic example of 'for loop'. learn='Start learning from Javatpoint.' for learn in $learn do echo $learn done echo 'Thank You.'
Ieșire
Pentru Bucla pentru a citi un interval
Bash Script
#!/bin/bash #This is the basic example to print a series of numbers from 1 to 10. for num in {1..10} do echo $num done echo 'Series of numbers from 1 to 10.'
Ieșire
Pentru Bucla pentru a citi un interval cu Creștere/Scădere
Putem crește sau micșora o valoare specificată adăugând alte două puncte (..) și valoarea de care trebuie să trecem, de exemplu, {START..END..INCREMENT}. Consultați exemplul de mai jos:
Pentru Increment
#!/bin/bash #For Loop to Read a Range with Increment for num in {1..10..1} do echo $num done
Ieșire
Pentru Decrement
#!/bin/bash #For Loop to Read a Range with Decrement for num in {10..0..1} do echo $num done
Ieșire
Pentru Loop to Read Array Variables
Putem folosi „bucla for” pentru a repeta valorile unui tablou.
înlocuiți o culoare în gimp
Sintaxa poate fi definită astfel:
array=( 'element1' 'element 2' . . 'elementN' ) for i in '${arr[@]}' do echo $i done
Ieșire
Pentru fiecare element din „array”, instrucțiunile sau setul de comenzi de la „do” până la „done” sunt executate. Fiecare element poate fi accesat ca „i” în bucla pentru iterația respectivă. Consultați exemplul de mai jos care explică utilizarea „bucla for” pentru a itera elementele unei matrice:
Bash Script
#!/bin/bash #Array Declaration arr=( 'Welcome''to''Javatpoint' ) for i in '${arr[@]}' do echo $i done
Ieșire
Pentru Bucla pentru a citi spațiile albe din String ca separatori de cuvinte
Sintaxa poate fi definită după cum urmează:
#!/bin/bash for word in $str; do done
Aici, str se referă la un șir.
Instrucțiunile de la „do” până la „terminat” sunt executate pentru fiecare „cuvânt” dintr-un șir. Consultați exemplul de mai jos:
Bash Script
#!/bin/bash #For Loop to Read white spaces in String as word separators str='Let's start learning from Javatpoint.' for i in $str; do echo '$i' done
Ieșire
Pentru Bucla pentru a citi fiecare linie din String ca un cuvânt
Sintaxa poate fi definită după cum urmează:
#!/bin/bash for word in '$str'; do done
Aici, instrucțiunile de la „do” până la „terminat” sunt executate pentru fiecare „linie” a unui șir. Consultați exemplul de mai jos:
Bash Script
#!/bin/bash #For Loop to Read each line in String as a word str='Let's start learning from Javatpoint.' for i in '$str'; do echo '$i' done
Ieșire
Notă: Singura diferență dintre „For Loop to Read spaces white in String as word separators” și „For Loop to Read each line in String as a word” sunt ghilimelele duble din jurul variabilei șir.
Pentru buclă pentru a citi trei expresii
Sintaxa cu trei expresii este cea mai comună sintaxă a „buclă for”. Prima expresie se referă la procesul de inițializare, a doua expresie se referă la terminare, iar a treia expresie se referă la creșterea sau decrementarea.
Consultați exemplul de mai jos pentru a imprima de la 1 la 10 numere folosind trei expresii cu bucla for:
o serie de obiecte java
Bash Script
#!/bin/bash #For Loop to Read Three-expression for ((i=1; i<=10; i++)) do echo '$i' done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-8.webp" alt="Bash For Loop"> <h3>For Loop with a Break Statement</h3> <p>A 'break' statement can be used inside 'for' loop to terminate from the loop.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash #Table of 2 for table in {2..100..2} do echo $table if [ $table == 20 ]; then break fi done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-9.webp" alt="Bash For Loop"> <h3>For Loop with a Continue Statement</h3> <p>We can use the 'continue' statement inside the 'for' loop to skip any specific statement on a particular condition. It tells Bash to stop executing that particular iteration of the loop and process the next iteration.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash #Numbers from 1 to 20, ignoring from 6 to 15 using continue statement' for ((i=1; i<=20; 5 16 i++)); do if [[ $i -gt && -lt ]]; then continue fi echo done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-10.webp" alt="Bash For Loop"> <h3>Infinite Bash For Loop</h3> <p>When there is no 'start, condition, and increment' in the bash three expressions for loop, it becomes an infinite loop. To terminate the infinite loop in Bash, we can press Ctrl+C.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash i=1; for (( ; ; )) do sleep 1s echo 'Current Number: $((i++))' done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-11.webp" alt="Bash For Loop"> <h2>Conclusion</h2> <p>In this topic, we discussed how to use for loop statement in Bash to perform specific tasks</p> <hr></=20;></pre></=10;>
Ieșire
Bucla For cu o instrucțiune Continue
Putem folosi instrucțiunea „continue” în bucla „for” pentru a sări peste orice instrucțiune specifică pentru o anumită condiție. Îi spune lui Bash să oprească executarea acelei iterații specifice a buclei și să proceseze următoarea iterație.
Bash Script
#!/bin/bash #Numbers from 1 to 20, ignoring from 6 to 15 using continue statement' for ((i=1; i<=20; 5 16 i++)); do if [[ $i -gt && -lt ]]; then continue fi echo done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-10.webp" alt="Bash For Loop"> <h3>Infinite Bash For Loop</h3> <p>When there is no 'start, condition, and increment' in the bash three expressions for loop, it becomes an infinite loop. To terminate the infinite loop in Bash, we can press Ctrl+C.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash i=1; for (( ; ; )) do sleep 1s echo 'Current Number: $((i++))' done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-11.webp" alt="Bash For Loop"> <h2>Conclusion</h2> <p>In this topic, we discussed how to use for loop statement in Bash to perform specific tasks</p> <hr></=20;>
Ieșire
Concluzie
În acest subiect, am discutat cum să folosiți instrucțiunea for loop în Bash pentru a efectua anumite sarcini
=20;>=10;>