Com utilitzar fins al bucle als vostres scripts de Shell


A bash for, while i until són tres construccions de bucle. Tot i que cada bucle difereix sintàcticament i funcionalment, el seu propòsit és iterar sobre un bloc de codi quan s'avalua una determinada expressió.

Fins que s'utilitza el bucle per executar un bloc de codi fins que s'avalua que l'expressió és falsa. Això és exactament el contrari d'un bucle while. While loop executa el bloc de codi mentre l'expressió és certa i fins que loop fa el contrari.

until [ expression ]
do
	code block
	...
	...
done

Desglossem la sintaxi.

  • Per iniciar el bucle, hauríeu d'utilitzar la paraula clau fins seguida d'una expressió entre claus simples o dobles.
  • L'expressió s'ha d'avaluar com a falsa fins que comenci a executar el bloc de codi.
  • El bloc de codi real es col·loca entre do i fet.

En aquest breu article, aprendràs a utilitzar el bucle fins als teus scripts de shell utilitzant els exemples següents.

Creeu un bucle infinit en scripts

Podeu crear un bucle infinit utilitzant una declaració falsa com a expressió. Quan intenteu simular bucles infinits, proveu d'utilitzar el somni que passarà l'script periòdicament.

count=0
until false
do
	echo "Counter = $count"
	((count++))
	sleep 2
done

Creeu declaracions de línia única

Podeu crear declaracions de bucle d'una sola línia. Fes una ullada al codi següent. És el mateix que el nostre primer exemple de bucle infinit però en una sola línia. Aquí heu d'utilitzar un punt i coma (;) per acabar cada instrucció.

# until false; do echo "Counter = $count"; ((count++)); sleep 2; done

Altereu el flux amb la declaració de pausa i continua

Podeu utilitzar un break i continuar les declaracions dins del bucle while. La instrucció break sortirà del bucle i passarà el control a la següent instrucció mentre que la instrucció continue saltarà la iteració actual i iniciarà la següent iteració del bucle.

Estic fent servir el mateix exemple de bucle infinit. Aquí, quan el recompte sigui igual a cinc, la instrucció de continuar saltarà a la següent iteració saltant la resta del cos del bucle. De la mateixa manera, el bucle es trenca quan el recompte és igual o superior a 10.

count=0
until false
do
  ((count++))
  if [[ $count -eq 5 ]]
  then
    continue
  elif [[ $count -ge 10 ]]
  then
    break
  fi
  echo "Counter = $count"
done

Això és tot per aquest article. T'atraparem amb un altre article interessant aviat fins llavors segueix llegint i segueix donant-nos suport.