Bash Scripting: Bucles For While Until

En cualquier lenguaje de programación encontramos las estructuras que comúnmente llamamos bucles. Estas nos permiten realizar una operación las veces que sea necesario hasta cumplir una condición. Bash no es menos y podemos utilizar diversos tipos, veámoslos.


FOR

Si conoceis PHP, este for es más parecido al foreach que al for. Es decir, va a iterar sobre un conjunto de elementos. Vamos a escribir un ejemplo:

#!/bin/bash
for i in $( ls ); do
    echo item: $i
done

En este ejemplo estamos iterando sobre el resultado de el comando ls que nos listará el directorio actual. En la variable $i se incluye el resultado de la iteración sobre cada uno de los elementos del ls, y entre las instrucciones do y done incluimos lo que haremos en cada una de las vueltas. En este caso un echo de nuestra variable $i.

Si quisieramos hacer un for que fuera de 1 a 10 por ejemplo, deberíamos utilizar el comando seq que nos dará una secuencia de números. Veámoslo:

#!/bin/bash
for i in `seq 1 10`; do
    echo $i
done

Al ejecutar este comando se ejecutará 10 veces y mostrará la variable $i que irá de 1 a 10. Podéis investigar un poco más sobre el comando seq ya que os permite empezar en un determinado valor o mostrar la secuencia con saltos de 2 en 2 números o los que necesitéis.

WHILE

La estructura while va a ejecutarse mientras la condición que le indiquemos sea verdadera o hasta que invoquemos un break. En el ejemplo siguiente inicializamos un contador a 0 y solo saldremos del bucle cuando este sea mayor que 10. Para ello aumentamos en uno el contador cada vez que damos una vuelta en el bucle.

#!/bin/bash 
contador=0
while [  $contador -lt 10 ]; do
     echo valor actual $contador
     let contador=contador+1 
done

UNTIL

Por último veremos la estructura until. En realidad es muy parecida a while, de hecho su uso prácticamente sería cambiar while por until. Y la forma de evaluar la condición es al revés, es decir, se ejecuta mientras sea false la condición.

#!/bin/bash 
contador=20
until [  $contador -lt 10 ]; do
      echo valor actual $contador
      let contador-=1
done

En este ejemplo inicializamos el contador a 20 y lo decreceremos hasta que sea menor que 10.

Recordad que podreis ver estos ejemplos en nuestra cuenta de github en el repositorio de bashscripting https://github.com/3pies/bashscripting

Comments are closed.