logo

Declaracions de bucle | Guió de Shell

Declaracions de bucle en scripts de Shell: Hi ha un total de 3 declaracions de bucle que es poden utilitzar a la programació bash

Taula de contingut



Per alterar el flux de declaracions de bucle, s'utilitzen dues ordres que són,

  1. trencar
  2. continuar

Les seves descripcions i sintaxis són les següents:

Declaració `while' a Shell Script a Linux

Aquí s'avalua l'ordre i s'executarà en funció del bucle resultant, si l'ordre s'eleva a fals, el bucle s'acabarà això.



#/bin/bash while  do       done>

Implementació del bucle `While` a l'script Shell.

Primer, creem un fitxer mitjançant un editor de text a Linux. En aquest cas, estem utilitzant l'editor `vim`.

vim looping.sh>

Podeu substituir looping.sh amb el nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.



chmod +x looping.sh>

#/bin/bash

a=0

# És menor que l'operador

#Iterar el bucle fins a menys de 10

mentre que [ $a -lt 10 ]
fer
# Imprimeix els valors
fet $a
# augmenta el valor
a=`expr $a + 1`
fet

Sortida:

While Loop a Linux

While Loop a Linux

Explicació:

  • #/bin/bash> : Especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • a=0> : Inicialitza una variablea>amb el valor 0.
  • while [ $a -lt 10 ]> : inicia un bucle while que continua mentre el valora>és inferior a 10.
  • do> : Marca l'inici del cos del bucle.
  • echo $a> : Imprimeix el valor actual dea>la consola.
  • a=> expr $a + 1 : Incrementa el valor dea>per 1. Elexpr>L'ordre s'utilitza per a expressions aritmètiques.
  • done> : Marca el final del bucle.

Declaració `for` a l'script Shell a Linux

El bucle for opera en llistes d'elements. Repeteix un conjunt d'ordres per a cada element d'una llista.
Aquí var és el nom d'una variable i word1 a wordN són seqüències de caràcters separats per espais (paraules). Cada vegada que s'executa el bucle for, el valor de la variable var s'estableix a la paraula següent de la llista de paraules, paraula1 a paraulaN.

Sintaxi:

#/bin/bash for in  do       done>

Implementació del bucle `for` amb la instrucció `break` a l'script de Shell.

Primer, creem un fitxer mitjançant un editor de text a Linux. En aquest cas, estem utilitzant l'editor `vim`.

javatpoint java
vim for.sh>

Podeu substituir for.sh pel nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.

chmod +x for.sh>

#/bin/bash

#Inici del bucle for

per a en 1 2 3 4 5 6 7 8 9 10
fer

# si a és igual a 5 trenca el bucle
si [ $a == 5 ]
aleshores
trencar
ser

# Imprimeix el valor
fet Iteration no $a
fet

Sortida:

Break statement in for Loop a Linux

Break statement in for Loop a Linux

Explicació:

  • #/bin/bash>: Especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • for a in 1 2 3 4 5 6 7 8 9 10>: inicia un bucle for que itera sobre els valors de l'1 al 10, assignant cada valor a la variablea>en cada iteració.
  • do>: Marca l'inici del cos del bucle.
  • if [ $a == 5 ]>: Comprova si el valor actuala>és igual a 5.
    • then>: Marca l'inici del bloc condicional que s'ha d'executar si la condició és certa.
      • break>: surt del bucle si la condició és certa.
    • fi>: Marca el final del bloc condicional.
  • echo 'Iteration no $a'>: Imprimeix un missatge que indica el número d'iteració actual.
  • done>: Marca el final del bucle.

L'script configura un bucle for que itera sobre els valors de l'1 al 10. Durant cada iteració, comprova si el valora>és igual a 5. Si ho és, es surt del bucle utilitzant elbreak>declaració. En cas contrari, imprimeix un missatge que indica el número d'iteració actual. El bucle continua fins que completa totes les iteracions o fins que troba una instrucció break.

cadena multilínia javascript

Implementació del bucle `for` amb la instrucció `continue` a l'script de Shell.

Primer, creem un fitxer mitjançant un editor de text a Linux. En aquest cas, estem utilitzant l'editor `vim`.

vim for_continue.sh>

Podeu substituir for_continue.sh pel nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.

chmod +x for_continue.sh>

#/bin/bash

per a en 1 2 3 4 5 6 7 8 9 10
fer

# si a = 5, continueu el bucle i
# no passeu a la línia 8

si [ $a == 5 ]
aleshores
continuar
ser
fet Iteration no $a
fet

Sortida:

Continueu declaració en bucle for a Linux

Continueu declaració en bucle for a Linux

Explicació:

  • #/bin/bash> : Especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • for a in 1 2 3 4 5 6 7 8 9 10> : inicia un bucle for que itera sobre els valors de l'1 al 10, assignant cada valor a la variablea>en cada iteració.
  • do> : Marca l'inici del cos del bucle.
  • if [ $a == 5 ]> : Comprova si el valor actuala>és igual a 5.
    • then> : Marca l'inici del bloc condicional que s'ha d'executar si la condició és certa.
      • continue> : salta la resta del cos del bucle i passa a la següent iteració si la condició és certa.
    • fi> : Marca el final del bloc condicional.
  • echo 'Iteration no $a'> : Imprimeix un missatge que indica el número d'iteració actual. Aquesta línia es salta sia>és igual a 5 a causa de lacontinue>declaració.
  • done> : Marca el final del bucle.

L'script configura un bucle for que itera sobre els valors de l'1 al 10. Durant cada iteració, comprova si el valora>és igual a 5. Si ho és, el bucle continua fins a la següent iteració sense executar les sentències restants al cos del bucle. En cas contrari, imprimeix un missatge que indica el número d'iteració actual. El bucle continua fins que completa totes les iteracions.

Declaració 'fins' a Shell Script a Linux

El bucle fins s'executa tantes vegades com la condició/ordre s'avalua com a fals. El bucle finalitza quan la condició/ordre esdevé certa.

Sintaxi:

#/bin/bash until  do       done>

Implementant el bucle `fins` a Shell Scrip

Primer, creem un fitxer mitjançant un editor de text a Linux. En aquest cas, estem utilitzant l'editor `vim`.

vim until.sh>

Podeu substituir fins. sh amb el nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.

chmod +x until.sh>

#/bin/bash

a=0

# -gt és més gran que l'operador
#Itereu el bucle fins que a sigui superior a 10

fins a [ $a -gt 10 ]
fer

# Imprimeix els valors
fet $a

# augmenta el valor
a=`expr $a + 1`
fet

Sortida:

Bucle Unitl a Linux

Fins al bucle a Linux

Explicació:

  • #/bin/bash> : Especifica que l'script s'ha d'interpretar mitjançant l'intèrpret d'ordres Bash.
  • a=0> : Inicialitza una variablea>amb el valor 0.
  • until [ $a -gt 10 ]> : inicia un bucle fins que continua mentre el valora>no és superior a 10.
  • do> : Marca l'inici del cos del bucle.
  • echo $a> : Imprimeix el valor actual dea>la consola.
  • a=> expr $a + 1 : Incrementa el valor dea>per 1. Elexpr>L'ordre s'utilitza per a expressions aritmètiques.
  • done> : Marca el final del bucle.

Nota: Els scripts d'intèrpret d'ordres són un llenguatge que distingeix entre majúscules i minúscules, el que significa que s'ha de seguir la sintaxi adequada mentre s'escriuen els scripts.

Exemples de declaracions de bucle

1. Iteració sobre colors utilitzant un bucle For

Primer, creem un fitxer mitjançant un editor de text a Linux. En aquest cas, estem utilitzant l'editor `vim`.

vim color.sh>

Podeu substituir color.sh pel nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.

chmod +x color.sh>

#/bin/bash

COLORS=vermell verd blau

# el bucle for continua fins que llegeix tots els valors dels COLORS

per COLOR a $COLORS
fer
echo COLOR: $COLOR
fet

Sortida:

Per fins a Linux

Per fins a Linux

Explicació:

característiques de java
  • Inicialització de colors:
    • COLORS='red green blue'>: Inicialitza una variable anomenadaCOLORS>amb una llista de valors de color separats per espais (vermell, verd i blau).
  • Per a la iteració del bucle:
    • for COLOR in $COLORS>: inicia un bucle for que itera sobre cada valor delCOLORS>variable.
      • Cos del bucle:
        • echo 'COLOR: $COLOR'>: Imprimeix un missatge per a cada color, mostrant el valor del color actual.
    • El bucle continua fins que processa tots els valors presents al fitxerCOLORS>variable.

Aquest exemple mostra un bucle for senzill a Bash, iterant sobre una llista de colors emmagatzemats al fitxerCOLORS>variable. El bucle imprimeix un missatge per a cada color, que indica el color actual que s'està processant. El bucle itera fins que s'esgoten tots els valors de color.

2. Creació d'un bucle infinit amb while true en Shell Script

Primer creem un fitxer amb un editor de text a Linux. En aquest cas estem utilitzant l'editor `vim`.

vim infinite.sh>

Podeu substituir infinite.sh pel nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.

chmod +x infinite.sh>

#/bin/bash

mentre que és cert
fer

# Ordre a executar
# sleep 1 indica que dorm durant 1 segon
echo Hola, sóc bucle infinit
dormir 1
fet

Sortida:

bucle infinit a linux

bucle infinit a linux

Explicació:

Estructura de bucle infinit:

  • while true>: Inicia un bucle while que continua indefinidament com a condiciótrue>sempre és cert.
    • Cos del bucle:
      • echo 'Hi, I am infinity loop'>: Imprimeix un missatge que indica que l'script està en un bucle infinit.
      • sleep 1>: Atura l'execució del bucle durant 1 segon abans de la següent iteració.
  • El bucle continua indefinidament, executant les ordres dins del seu cos repetidament.

Aquest exemple mostra la creació d'un bucle infinit utilitzant la construcció while true a Bash. El bucle imprimeix contínuament un missatge que indica el seu estat com a bucle infinit i inclou una ordre sleep 1, provocant un retard d'un segon entre iteracions. Sovint s'utilitzen bucles infinits per a processos que s'han d'executar contínuament fins que s'interrompen manualment.

3. Bucle interactiu de confirmació del nom

Primer creem un fitxer amb un editor de text a Linux. En aquest cas estem fent servir l'editor `vim`.

vim name.sh>

Podeu substituir name.sh pel nom desitjat.

A continuació, fem que el nostre script sigui executable mitjançant l'ordre `chmod` a Linux.

casos de prova conjunta
chmod +x name.sh>

#/bin/bash

CORRECTE=n
mentre que [ $ CORRECTE == n ]
fer

# bucle s'interromp quan introduïu y, és a dir, quan el vostre nom és correcte
# -p significa un missatge que demana l'entrada

llegir -p Introduïu el vostre nom: NOM
llegir -p ${NAME} és correcte? CORRECTE
fet

Sortida:

Script interactiu a Linux

Script interactiu a Linux

Explicació:

  • Inicialització:
    • CORRECT=n>: Inicialitza una variable anomenadaCORRECT>amb el valor n. Aquesta variable s'utilitza per controlar el bucle.
  • Bucle interactiu:
    • while [ '$CORRECT' == 'n' ]>: Inicia un bucle while que continua mentre el valor deCORRECT>és igual a n.
      • Cos del bucle:
        • read -p 'Enter your name:' NAME>: Demana a l'usuari que introdueixi el seu nom i emmagatzema l'entrada al fitxerNAME>variable.
        • read -p 'Is ${NAME} correct? ' CORRECT>: Demana a l'usuari que confirmi si el nom introduït és correcte i actualitza elCORRECT>variable en conseqüència.
    • El bucle continua fins que l'usuari introdueix y (indicant el nom correcte).

Aquest exemple mostra un bucle interactiu que demana a l'usuari que introdueixi el seu nom i després demana confirmació. El bucle continua fins que l'usuari confirma que el nom introduït és correcte introduint y. El bucle utilitza el ` read> `>comanda per a l'entrada de l'usuari i actualitza el fitxer ` CORRECT> `>variable per controlar el flux del bucle.

Conclusió

En aquest article hem parlat de declaracions de bucle en els scripts de Bash, que cobreixenwhile>,for>, iuntil>bucles. Introdueix l'ús debreak>icontinue>sentències per modificar el comportament del bucle. Exemples pràctics il·lustren la implementació de bucles, inclosa la iteració sobre valors de color, la creació de bucles infinits i la creació d'un bucle interactiu per a la validació de l'entrada de l'usuari. La guia ofereix un recurs concís però informatiu per entendre i utilitzar construccions de bucle en els scripts de Bash.