A bucle while és una declaració que itera sobre un bloc de codi fins que la condició especificada s'avalua com a falsa. Podem utilitzar aquesta declaració o bucle al nostre programa quan no sabem quantes vegades la condició es valorarà com a vertadera abans d'avaluar com a falsa.
Taula de contingut
- La sintaxi d'un bucle while a BASH Scripting
- Exemple de bucle utilitzant la instrucció while a Linux
- Llegint un fitxer amb un bucle while
- Bucle while infinit
- Bucle while per repetir un nombre determinat de vegades
- Llegiu l'argument de la línia d'ordres amb les opcions getopts
- Bucle while d'estil C
- Bucle while per realitzar operacions en un fitxer
- Escriptura en un fitxer mitjançant un bucle while
- Trenca i continua fent servir el bucle while
- Preguntes freqüents
La sintaxi d'un bucle while a BASH Scripting
while [ condition ]; do # statements # commands done >
Si la condició és certa, les ordres dins del bloc while s'executen i es tornen a repetir després de comprovar la condició. A més, si la condició és falsa, s'ometen les declaracions dins del bloc while i s'executen les sentències posteriors al bloc while.
Exemple de bucle utilitzant la instrucció while a Linux
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/usr/bin/bash
a=7
mentre que [ $a -gt 4 ];
fer
fet $a
((a–))
fet
ressò fora del bucle
Explicació:
-
#!/usr/bin/bash>: Aquesta línia s'anomena shebang i indica el camí a l'intèrpret que s'ha d'utilitzar per executar l'script. En aquest cas, especifica que s'ha d'utilitzar l'intèrpret d'ordres Bash. -
a=7>: Inicialitza una variable anomenadaa>amb el valor 7. -
while [ $a -gt 4 ];>: Inicia un bucle while que continua mentre el valor dea>és superior a 4. -
do>: Marca l'inici del bloc de codi que s'ha d'executar dins del bucle while. -
echo $a>: Imprimeix el valor actual de la variablea>a la consola. -
((a--))>: Disminueix el valor dea>per 1. Aquesta és una manera taquigràfica d'escriurea=$((a - 1))>. -
done>: Marca el final del bloc de codi per al bucle while. -
echo 'Out of the loop'>: Imprimeix fora del bucle a la consola un cop finalitzat el bucle while.

While Loop a Linux
En resum, aquest script inicialitza una variable ` a`> amb el valor 7, després entra en un bucle while que continua mentre ` a`> és més gran que 4. Dins del bucle, imprimeix el valor actual de ` a`> i la disminueix en 1 a cada iteració. Una vegada ` a`> es converteix en 4 o menys, el bucle surt i l'script s'imprimeix fora del bucle a la consola.
Llegint un fitxer amb un bucle while
Podem llegir un fitxer amb un bucle while a BASH. Mitjançant l'anàlisi de determinats paràmetres a la condició de bucle while, podem iterar sobre el fitxer línia per línia o per altres grups com ara caràcters o paraules.
com obrir un fitxer en java
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/usr/bin/bash
fitxer=temp.txt
mentre llegeix la línia -r;
fer
fet $line
fet <$fitxer
Explicació:
-
#!/usr/bin/bash>: Aquesta línia shebang especifica que l'intèrpret d'ordres Bash s'ha d'utilitzar per interpretar l'script. -
file=temp.txt>: Assigna la cadena temp.txt a la variablefile>, que representa el nom del fitxer a llegir. -
while read -r line;>: Inicia un bucle while que llegeix cada línia del fitxer especificat. -
do>: Marca l'inici del bloc de codi que s'ha d'executar dins del bucle while. -
echo $line>: Imprimeix el contingut de la variableline>, que representa la línia actual que es llegeix des del fitxer, a la consola. -
done>: Marca el final del bloc de codi per al bucle while. -
<'$file'>: Redirigeix l'entrada del bucle while a partir del fitxer especificat, en aquest cas, temp.txt.
En resum, aquest script llegeix cada línia del fitxer temp.txt i l'imprimeix a la consola fins que no quedin més línies al fitxer. El-r>opció amb elread>L'ordre s'utilitza per garantir que les barres invertides a l'entrada es tracten com a caràcters literals.

llegir el fitxer utilitzant la instrucció while a Linux
Utilitzem l'ordre read per obtenir realment les línies o caràcters del fitxer. L'ordre de lectura es passa amb l'argument -r que ignora l'escapada de caràcters si apareix i, per tant, s'analitza com a seu. Llegim una línia d'un fitxer esmentat després de la declaració feta. L'ordre de lectura llegeix una línia del fitxer esmentat i els bucles while s'acaben quan es llegeix l'última línia del fitxer (no queda cap línia per llegir).
Així és com podem llegir el contingut del fitxer utilitzant un bucle while a BASH.
Bucle while infinit
Per crear un bucle infinit mitjançant una instrucció de bucle while. No necessitem posar cap condició al bucle while i, per tant, el bucle itera infinitament. El següent és l'exemple d'un bucle while infinit:
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/usr/bin/bash
mentre :
fer
echo Un bucle infinit
# Podem prémer Ctrl + C per sortir de l'script
fet
Explicació:
-
#!/usr/bin/bash>: La línia shebang especifica que s'ha d'utilitzar l'intèrpret d'ordres Bash per interpretar l'script. -
while :>: Inicia un bucle infinit. El:>(de dos punts) és una ordre integrada de l'intèrpret d'ordres que sempre retorna true, creant efectivament un bucle infinit. -
do>: Marca l'inici del bloc de codi que s'ha d'executar dins del bucle infinit. -
echo 'An Infinite loop'>: Imprimeix la cadena An Infinite bucle a la consola en cada iteració del bucle. -
# We can press Ctrl + C to exit the script>: Aquest és un comentari que indica que podeu interrompre l'script prement Ctrl + C al terminal. Ctrl + C és una manera habitual d'interrompre i finalitzar els scripts en execució al terminal. -
done>: Marca el final del bloc de codi per al bucle infinit.
En resum, aquest script crea un bucle infinit que fa ressò contínuament del missatge Un bucle infinit a la consola. El bucle es pot interrompre i sortir de l'script prement Ctrl + C al terminal.

Bucle infinit mitjançant la declaració While a Linux
Així, el bucle while de l'script s'iterarà durant un temps infinit. Podem trencar manualment el bucle o l'script mitjançant CTRL + C.
Bucle while per repetir un nombre determinat de vegades
Podem utilitzar un bucle while per iterar durant un nombre fix de vegades, podem establir que la condició sigui -le o menys que igual a un nombre, i el bucle iterarà fins que l'iterador sigui menor o igual que el nombre proporcionat a la condició. A més, hem d'incrementar l'iterador manualment perquè l'iterador de bucle continuï funcionant, o bé, el bucle continuarà per sempre.
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/usr/bin/bash
i=1
# el número 4 pot ser el límit
# itera el bucle
mentre que [ $i -le 4 ];
fer
fet $i
((i++))
fetmapa rendir
Explicació:
-
#!/usr/bin/bash>: La línia shebang especifica que s'ha d'utilitzar l'intèrpret d'ordres Bash per interpretar l'script. -
i=1>: Inicialitza una variable anomenadai>amb el valor 1. -
while [ $i -le 4 ];>: Inicia un bucle while que continua mentre el valor dei>és menor o igual que 4. -
do>: Marca l'inici del bloc de codi que s'ha d'executar dins del bucle while. -
echo $i>: Imprimeix el valor actual de la variablei>a la consola. -
((i++))>: Incrementa el valor dei>per 1. Aquesta és una manera taquigràfica d'escriurei=$((i + 1))>. -
done>: Marca el final del bloc de codi per al bucle while.

bucle while a Linux
A l'exemple anterior, podem veure que el bucle itera un nombre definit de vegades. Com que hem inicialitzat el comptador a 1 i la condició és iterar el bucle fins que l'iterador sigui menor o igual que el nombre en aquest cas 4. Així, podem canviar el nombre de la condició segons el nostre requisit.
Llegiu l'argument de la línia d'ordres amb les opcions getopts
Podem utilitzar les opcions get ops per llegir l'entrada des de la línia d'ordres i, si hi ha diversos arguments, podem comprovar-los i analitzar-los un per un mitjançant un bucle while. getopts és una eina per obtenir l'entrada de l'usuari des de la línia d'ordres, podem tenir diverses opcions per analitzar des de la línia d'ordres, i utilitzant getopts i bucles while, podem crear un programa d'entrada d'usuari d'aspecte professional.
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/bin/bash
mentre que getopts n:a: OPT
fer
cas ${OPT} a
n) nom=${OPTARG} ;;
a) edat=${OPTARG} ;;
*) echo Opció no vàlida
sortida 1;;
esac
fet
printf Em dic $name i tinc $age anys
Explicació:
-
#!/bin/bash>: La línia shebang especifica que s'ha d'utilitzar l'intèrpret d'ordres Bash per interpretar l'script. -
while getopts n:a: OPT>: Inicia un bucle que utilitzagetopts>per analitzar les opcions de la línia d'ordres. Les opcions especificades sónn>ia>, que s'espera que siguin seguits d'un argument. -
do>: Marca l'inici del bloc de codi que s'ha d'executar dins del bucle. -
case '${OPT}' in>: inicia una instrucció de cas que avalua el valor de l'opció trobada pergetopts>. -
n) name=${OPTARG};;>: Si l'opció és-n>, assigna el valor de l'argument corresponent a la variablename>. -
a) age=${OPTARG};;>: Si l'opció és-a>, assigna el valor de l'argument corresponent a la variableage>. -
*) echo 'Invalid option'>: Si es troba una opció no vàlida, imprimeix un missatge d'error a la consola. -
exit 1;;>: surt de l'script amb un codi d'estat diferent de zero, que indica un error. -
esac>: Acaba la declaració del cas. -
done>: Marca el final del bloc de codi per al bucle. -
printf 'My name is $name and am $age years old '>: Imprimeix un missatge amb format a la consola utilitzant els valors de `name`>i `age`>obtingut a partir de les opcions de la línia d'ordres.

Bucle while a Linux
En aquest cas, tenim dues opcions a saber, el nom i l'edat, podeu tenir múltiples opcions. Hem d'especificar quina opció utilitzarem les declaracions switch case i des de la línia d'ordres utilitzant l'opció -shorthand. En aquest cas, hem utilitzat -n per nom i -a per edat . També tenim una comprovació de majúscules i minúscules predeterminada o no vàlida per suportar que no analitzem arguments incorrectes. Podem assignar el valor de l'opció mitjançant el OPTARG variable que analitza el valor proporcionat a l'opció.
El bucle while aquí s'utilitza per iterar fins que no hi hagi cap opció passada des de la línia d'ordres. Comprovem l'opció -n i -a i iterem fins que es prem la tecla de retorn de carro o la tecla Intro i no hi ha més opcions per analitzar.
Bucle while d'estil C
Podem utilitzar el bucle while amb estil C a BASH, les variables s'han d'avaluar amb l'estil BASH, però la sintaxi general sembla C. Podem utilitzar els operadors com ,<= i així successivament en la condició del bucle while i, per tant, s'anomena com el bucle while d'estil C.
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim c-style-while.sh>
#!/bin/bash
i=0
mentre que ((i <12))
fer
fet $i
((i+=2))
fet

c-estil-mentre
En aquest exemple, podem veure que el bucle while té una condició amb operadors no bash com -le, -ge, etc., en comptes d'utilitzar els operadors d'estil C a la condició. La resta del bucle és el bucle bàsic com a BASH, la variable o iterador i s'incrementa en dos com podem veure a l'última declaració del cos del bucle. Així, el bucle itera més de 5 vegades.
llista de làtex
Bucle while per realitzar operacions en un fitxer
Podem realitzar operacions sobre un fitxer, com llegir només una part determinada d'un fitxer. Si tenim columnes formatades d'una manera determinada, podem utilitzar variables per assignar-les i imprimir-les una fila de dades.
Aquí teniu el nom del fitxer d'exemple wh.txt
vim wh.txt>
creem un fitxer de text utilitzant un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim file-while.sh>
Tipus d'idioma publicat
Python general 1991
Javascript web 1995
Java mòbil 1995
Rust incrustat 2010
Anar al fons 2007
creem un fitxer de text utilitzant un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim file-while.sh>
#!/bin/bash
mentre es llegeix a b c
fer
fet $b – $a
fet

Bucle while a Linux
En aquest exemple, tenim tres files, llegim el contingut assignant-los a les variables a,b i c, pot ser qualsevol cosa que vulgueu, però recordeu utilitzar-les al cos del bucle. Podem seleccionar una columna concreta com b i a i podem imprimir-hi o realitzar qualsevol operació. Això no es reflectirà al fitxer, ja que només són les variables de l'script local.
Escriptura en un fitxer mitjançant un bucle while
Podem escriure en un fitxer mitjançant l'entrada de l'usuari en un bucle while. Podem utilitzar el bucle while per iterar fins que sortim manualment del bucle mitjançant CTRL + D desant els canvis al fitxer o mitjançant CTRL + C per evitar escriure al fitxer. Utilitzem l'ordre read per introduir el text des de la línia d'ordres i analitzar-lo al fitxer.
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim write-wh.sh>
#! /bin/bash
fitxer=wh.txt
echo Introduïu el contingut al fitxer $fitxer
mentre llegeix la línia
fer
echo $línia>> $fitxer
fet

bucle while a Linux
Així, a partir de l'exemple anterior, vam poder introduir text en un fitxer mitjançant un bucle while i una ordre de lectura. Per sortir del bucle i desar els canvis al fitxer, utilitzem les tecles CTRL + D, i per sortir del bucle sense desar res al fitxer podem utilitzar les tecles CTRL + C. Així introduïm el text des de la línia d'ordres al fitxer de text mitjançant l'ordre read i un bucle while.
Trenca i continua fent servir el bucle while
Break and continue són essencials en un programa que s'ocupa de les declaracions de bucle, ja que controlen el flux de les declaracions de bucle sense cap condició explícita.
Break declaració en While Loop
Utilitzem declaracions break per sortir del bucle sense esperar que la condició del bucle while s'avaluï com a fals. Aquesta declaració es pot utilitzar dins d'un bloc de bucle. Això es pot utilitzar per sortir d'un bucle infinit amb una condició programàtica dins del bucle i així mantenir el control del bucle.
Per exemple, tenim un script que compta des de l'1 fins a sempre. Però podem sortir del bucle mitjançant una programació mitjançant una instrucció break dins del cos del bucle amb una condició.
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/usr/bin/bash
i=1
mentre :
fer
fet $i
si [ $i -eq 20 ]; aleshores
echo Aquest és el final del bucle
trencar
ser
((i++))
fet

Break declaració while bucle a Linux
Des de l'script i l'execució, podem veure que hem pogut trencar o sortir d'un bucle infinit amb una instrucció condicional i la instrucció break. Així, la instrucció break s'utilitza per obtenir el flux de control d'un programa/script des de dins d'un bucle while per sortir del bucle sense que la condició del bucle s'avaluï com a fals.
Continueu la declaració al bucle While
Podem utilitzar la instrucció continue per fer el contrari de la instrucció break. Saltarà a l'inici del bloc de bucle i tornarà a repetir. Això es pot utilitzar per saltar determinades ordres per a determinades condicions i, per tant, permet un canvi en el flux del bucle.
Per exemple, si tenim una variable inicialitzada a 1 i volem mostrar només els nombres divisibles per cinc o en un determinat patró seguint una condició, podem utilitzar les declaracions continue per fer-ho. Això permet iterar sobre el bucle de la manera desitjada.
Primer, creem un fitxer de text amb un editor de text a Linux, en aquest cas estem fent servir l'editor de text `vim`.
vim while.sh>
#!/usr/bin/bash
operador ternari javai=1
mentre que [ $i -lt 30 ];
fer
((i++))
si [[ $(( $i % 5 )) -ne 0 ]];
aleshores
continuar
ser
fet $i
fet

Continua la declaració al bucle While a Linux
Com podem veure la instrucció continue, salta al principi del bloc i comença l'execució de les ordres saltant les ordres següents dins del bloc. El bucle while itera només pel valor de variable i sent inferior a 30, per tant la condició if comprova si el variable i és divisible per 5, i si no ho és, tornem a iterar amb continuar i incrementem el valor de la variable i. El variable i només es fa ressò si és divisible per 5, per tant, la condició if s'avalua com a falsa i no ens trobem amb una declaració de continuïtat i continuem amb el flux normal del bucle. Això es fa per evitar el registre de tots els números i només imprimir els números que no segueixen un patró o una condició a la instrucció if o altres declaracions condicionals.
Preguntes freqüents
1. Què és un ` while`> bucle a l'script de Bash?
Awhile>bucle és una instrucció de flux de control en els scripts de Bash que permet que un determinat bloc de codi s'executi repetidament sempre que una condició especificada sigui certa. El bucle proporciona una manera d'automatitzar tasques repetitives i és una construcció fonamental en l'escriptura i la programació.
2. Com funciona la sintaxi d'un ` while`> mirar en bucle a Bash?
La sintaxi bàsica d'awhile>bucle a Bash és el següent:
mentre [condició]
fer
# Codi que s'executarà mentre la condició sigui certa
fet
El ` condition`> és una prova que es produeix abans de cada iteració del bucle. Si la condició és certa, s'executa el codi dins del bucle. Si la condició és falsa, el bucle surt i l'script continua amb la següent ordre després del ` done`> declaració.
3. Quin és el paper del ` (( ... ))`> construir en un Bash while> bucle?
El ` (( ... ))`> Construcció a Bash s'utilitza per a operacions aritmètiques. En el context d'un ` while`> bucle, sovint s'utilitza per avaluar condicions aritmètiques.
Per exemple: ` ((i <10))> `>comprova si la variable ` i`> és inferior a 10. Això us permet utilitzar expressions aritmètiques directament en la condició de bucle, per la qual cosa és especialment útil quan es tracta de comparacions numèriques.
4. Com crear un bucle infinit amb ` while`> a Bash?
Es pot crear un bucle infinit a Bash proporcionant una condició que sempre s'avalua com a vertadera.
Per exemple:
mentre que és cert
fer
# Codi per al bucle infinit
fet
Alternativament, podeu utilitzar una constant diferent de zero a la condició, com ara ` while [ 1 ]`> , per aconseguir el mateix resultat. Els bucles infinits són útils en situacions en què es requereix una execució contínua fins que s'interromp manualment.
Conclusió
En aquest article hem parlat del bucle while de l'scripting BASH que demostra ser una eina versàtil per executar un bloc de codi repetidament en funció d'una condició especificada. La sintaxi bàsica implica definir la condició entre claudàtors, permetent iteracions flexibles. L'article explora diverses aplicacions de bucles while, inclosa la lectura de fitxers, la creació de bucles infinits, iteracions fixes, l'anàlisi d'arguments de línia d'ordres i l'ús de declaracions break i continue. Des de la sintaxi d'estil C fins a l'escriptura interactiva de fitxers, cada exemple demostra l'adaptabilitat del bucle per atendre una sèrie de necessitats de script. Aquesta visió general completa subratlla la importància del bucle while en els scripts BASH, proporcionant un mecanisme robust per a la repetició controlada i l'execució eficient del codi.