En aquest tema, entendrem l'ús de per bucle en scripts Bash.
Com qualsevol altre llenguatge de programació, el script de l'intèrpret d'ordres bash també admet 'bucles for' per realitzar tasques repetitives. Ens ajuda a iterar un conjunt concret d'instruccions sobre una sèrie de paraules d'una cadena o elements d'una matriu. Per exemple, podeu executar l'ordre (o tasca) d'UNIX moltes vegades o simplement llegir i processar la llista d'ordres utilitzant un 'bucle for'.
Sintaxi de For Loop
Podem aplicar 'for loop' a l'script bash de dues maneres. Una manera és 'for-in' i una altra és la sintaxi d'estil c. A continuació es mostra la sintaxi de 'for loop' a l'script de l'intèrpret d'ordres bash:
for variable in list do commands done
O
for (( expression1; expression2; expression3 )) do commands done
Hi ha alguns punts clau de la declaració 'for loop':
- Cada bloc de 'for loop' a bash comença amb la paraula clau 'do' seguida de les ordres dins del bloc. La sentència 'for loop' es tanca amb la paraula clau 'done'.
- El nombre de temps durant el qual s'iterarà un 'bucle for' depèn de les variables de la llista declarades.
- El bucle seleccionarà un element de la llista i assignarà el valor a una variable que s'utilitzarà dins del bucle.
- Després de l'execució de les ordres entre 'fer' i 'fet', el bucle torna a la part superior i selecciona el següent element de la llista i repeteix tot el procés.
- La llista pot contenir números o cadenes, etc. separats per espais.
A continuació es donen alguns dels exemples de 'bucle for' per il·lustrar com funcionen:
Exemple bàsic '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.'
Sortida
For Loop per llegir un rang
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.'
Sortida
For Loop per llegir un rang amb increment/disminució
Podem augmentar o disminuir un valor especificat afegint dos punts més (..) i el valor a seguir, per exemple, {START..END..INCREMENT}. Consulteu l'exemple següent:
Per a l'increment
#!/bin/bash #For Loop to Read a Range with Increment for num in {1..10..1} do echo $num done
Sortida
Per Decrement
#!/bin/bash #For Loop to Read a Range with Decrement for num in {10..0..1} do echo $num done
Sortida
For Loop per llegir variables de matriu
Podem utilitzar 'for loop' per iterar els valors d'una matriu.
conjunt vs mapa
La sintaxi es pot definir com:
array=( 'element1' 'element 2' . . 'elementN' ) for i in '${arr[@]}' do echo $i done
Sortida
Per a cada element de 'matriu', s'executen les declaracions o el conjunt d'ordres des de 'do' fins a 'fet'. Es pot accedir a cada element com a 'i' dins del bucle per a la respectiva iteració. Consulteu l'exemple següent que explica l'ús de 'for loop' per iterar sobre elements d'una matriu:
Bash Script
#!/bin/bash #Array Declaration arr=( 'Welcome''to''Javatpoint' ) for i in '${arr[@]}' do echo $i done
Sortida
For Loop to Read espais en blanc a String com a separadors de paraules
La sintaxi es pot definir de la següent manera:
#!/bin/bash for word in $str; do done
Aquí, str fa referència a una cadena.
Les declaracions de 'fer' a 'fet' s'executen per a cada 'paraula' d'una cadena. Consulteu l'exemple següent:
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
Sortida
For Loop per llegir cada línia de String com una paraula
La sintaxi es pot definir de la següent manera:
#!/bin/bash for word in '$str'; do done
Aquí, les declaracions des de 'fer' fins a 'fet' s'executen per a cada 'línia' d'una cadena. Consulteu l'exemple següent:
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
Sortida
Nota: L'única diferència entre 'For Loop to Read espais en blanc a String com a separadors de paraules' i 'For Loop to Read each line in String com a word' són les cometes dobles al voltant de la variable de cadena.
For Loop to Read Tres expressions
La sintaxi de tres expressions és la sintaxi més comuna de 'for loop'. La primera expressió fa referència al procés d'inicialització, la segona expressió fa referència a la terminació i la tercera expressió fa referència a l'increment o disminució.
Consulteu l'exemple següent per imprimir d'1 a 10 números amb tres expressions amb bucle for:
Bash Script
unió de cadena java
#!/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;>
Sortida
For Loop amb una instrucció Continue
Podem utilitzar la declaració 'continue' dins del bucle 'for' per saltar qualsevol declaració específica en una condició particular. Li diu a Bash que deixi d'executar aquesta iteració particular del bucle i processi la següent iteració.
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;>
Sortida
Conclusió
En aquest tema, vam parlar de com utilitzar la instrucció de bucle for a Bash per realitzar tasques específiques
=20;>=10;>