Com que BASH és un llenguatge de línia d'ordres, tenim una experiència força rica en funcions per aprofitar les habilitats de programació per realitzar tasques al terminal. Podem utilitzar bucles i declaracions condicionals als scripts BASH per realitzar alguns problemes repetitius i complicats d'una manera programàtica senzilla. En aquest article, ens centrarem en el per bucle en scripts BASH.
Depenent del cas d'ús i del problema que s'està intentant automatitzar, hi ha un parell de maneres d'utilitzar bucles.
- Simple For bucle
- Loop for basat en el rang
- Iteració de matriu per a bucles
- Estil C per a bucles
- Bucle for infinit
Simple For bucle
Per executar un bucle for podem escriure la sintaxi següent:
#!/bin/bash for n in a b c; do echo $n done>
- En la primera iteració,
n>pren el valor a i l'script imprimeix a. - En la segona iteració,
n>pren el valor b i el guió imprimeix b. - En la tercera iteració,
n>pren el valor c i l'script imprimeix c.

L'ordre anterior repetirà sobre els elements especificats després de en paraula clau una per una. Els elements poden ser números, cadenes o altres formes de dades.
Loop for basat en el rang
Podem utilitzar bucles for basats en rang. En aquest tipus de bucle, podem especificar el nombre per començar, aturar i incrementar a cada iteració (opcional) de la instrucció. Hi ha dues maneres de fer-ho, és a dir, esmentant el valor d'increment/decrementador i incrementant-lo per defecte. La sintaxi té aquest aspecte:
#!/bin/bash for n in {1..5}; do echo $n done> 
Al codi anterior, fem servir el {} per especificar un rang de números. Dins de les claus, especifiquem el punt inicial seguit de dos punts i un punt final. Per defecte, s'incrementa en un. Per tant, imprimim 5 números de l'1 al 5 ambdós inclosos.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
Aquí podem veure que el bucle s'ha incrementat en 2 unitats tal com s'esmenta a les claus. Així, això fa que treballar amb números sigui molt fàcil i còmode. Això també es pot utilitzar amb caràcters alfabètics.
NOTA: No podem utilitzar variables dins de les claus, així que haurem de codificar els valors. Per utilitzar les variables, veiem els bucles for d'estil C tradicionals a les següents seccions.
Iteració de matriu per a bucles
Podem iterar sobre matrius còmodament en bash utilitzant bucles for amb una sintaxi específica. Podem utilitzar les variables especials a BASH, és a dir, @ per accedir a tots els elements de la matriu. Mirem el codi:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Podem iterar sobre els elements de la matriu utilitzant l'operador @ que obté tots els elements de la matriu. Així, utilitzant el bucle for, iterem sobre ells un per un. Utilitzem la variable ${variable_name[@]} en la qual, les claus aquí expandeixen el valor de la variable s aquí, que és una matriu de cadenes. Utilitzant l'operador [@] accedim a tots els elements i, per tant, iterem sobre ells en el bucle for. Aquí, el n és l'iterador, per tant, podem imprimir el valor o fer-hi el processament necessari.
Estil C per a bucles
Com s'ha dit anteriorment, hem d'utilitzar les variables dins dels bucles for per iterar sobre una sèrie d'elements. I, per tant, els bucles for d'estil C tenen un paper molt important. Vegem com els fem servir.
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

char a cadena java
Com podem veure, podem utilitzar dinàmicament el valor del rang de condicions finals. Recordeu que els espais entre les claus poden ser intencionats i formen part de la sintaxi. Els bucles for d'estil C són els bucles que tenen 3 parts, l'iterador d'inicialització, l'incrementador/decrementador i la condició final.
A la sintaxi anterior, hem inicialitzat l'iterador/comptador de bucles a 1 que pot ser qualsevol cosa segons escolliu. La segona part és la condició final, aquí hem utilitzat la variable n que s'inicialitza abans del bucle for i per tant fem servir el simple $ operador per obtenir el valor de la variable. Finalment, tenim l'incrementador/decrementador que canvia l'iterador/comptador a un valor que pot ser qualsevol cosa però, a l'exemple, hem utilitzat l'operador unari (++) per augmentar el valor en un que equival a i=i+1 . Així podem utilitzar enunciats com i+=2, i–,++i, i així successivament i així successivament.
Bucle for infinit
No ho fem servir sovint, però de vegades és útil perquè funcionin determinades coses. La sintaxi és bastant fàcil i semblant als bucles for d'estil C.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
El bucle comença ambn>s'estableix en 4. S'incrementan>per 1 a cada iteració i imprimeix el valor den>fins quen>esdevé igual a 9. Quann>arriba a 9, elbreak>s'executa la instrucció i el bucle finalitza. El guió s'atura després d'imprimir els números del 4 al 8.

Com podem veure, el bucle 'for' no té condicions i aquest bucle per sempre, però tenim una declaració de condició per comprovar que no continua per sempre. Utilitzem la instrucció break dins de la instrucció if per sortir del bucle i deixar d'iterar amb l'iterador. Hem utilitzat l'incrementor per incrementar la variable al bucle, en cas contrari, el bucle és infinit. Per descomptat, necessitem una mica de lògica per sortir del bucle i per això hem d'utilitzar la declaració condicional if.