Ciclos

<< Regresar

While, Until y For

Ciclos

Los ciclos es la ejecución repetitiva de una sección del código. La terminal ofrece tres tipos de ciclos: while, until y for.

while

El comando while hace que un bloque de código se ejecute una y otra vez, tanto como el estado de salida de su condición sea verdadera (true). A continuación se presenta un ejemplo de su funcionamiento que cuenta del 0 al 9:

#!/bin/bash
number=0
while [ "$number" -lt 10 ]; do
echo "Number = $number"
number=$((number + 1))
done

En la línea 3, hemos creado una variable llamada number y es inicializada con el valor de 0. Después comienza el bucle while el cual especifica que va comprobar que number sea menor que (lt, less than) 10.

La palabra do en la línea 4 y done en la línea 7, encierran el bloque de código que se repetirá mientras el estado de salida de while se mantenga en cero (verdadero).

En el ejemplo, el bloque de código de salida que se repite es el valor de number que va incrementándose con cada iteración. Cada vez que el bloque de código se completa, se comprueba que number sea menor que 10 para poder continuar con la siguiente iteración. Por cada iteración number se incremente de uno en uno hasta que al momento de comprobar que number sea menor que 10 arroje un valor diferente a 0 (recuerde que cualquier otro número diferente a 0 se considera como falso/false), dando como concluido el ciclo y en este caso nuestro script finalizaría.

until

El comando until funciona de la misma forma que while, a excepción de que el bloque de código se repetirá tanto como su comprobación arroje falso. En el siguiente ejemplo la diferencia más sustancial con el anterior es la comprobación «$number» -ge 10 , significa que mientras number NO sea mayor o igual a 10 se repetirá el bloque de código, ejemplo:

#! /bin/bash
number=0
until [ "$number" -ge 10 ]; do
echo "Number = $number"
number=$((number + 1))
done

for

En esencia, for irá tomando los valores de lo que podríamos llamar «arreglo», su sintaxis es la siguiente:

for word in words; do
commands
done

word tomará valores, uno por uno, de words y ejecutará el bloque de código comprendido entre do y done.

Por ejemplo:

#!/bin/bash

for i in word1 word2 word3; do
echo $i
done

En este ejemplo i irá tomando los valores de word1, word2, word3 y los imprimirá en pantalla en dicho orden

El siguiente ejemplo cuenta las palabras contenidas en el archivo .bash_profile y a su vez los caracteres contenidos por cada palabra.

#!/bin/bash

count=0
for i in $(cat ~/.bash_profile); do
count=$((count + 1))
echo "Word $count ($i) contains $(echo -n $i | wc -c) characters"
done

Video: Ejemplo del uso de While y Until

En este video se verá el uso de While y Until, puede copiar los ejemplos de aquí:

#! /bin/bash 
# Copyright (c) 2015, J. Daniel Cordero

# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.

# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

number=0

while [[ $number -lt 10 ]]; do

    echo "Number = $number"
    number=$((number + 1))
done
#! /bin/bash 
# Copyright (c) 2015, J. Daniel Cordero

# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.

# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

number=0

until [[ $number -ge 10 ]]; do

    echo "Number = $number"
    number=$((number + 1))

done

Video: Ejemplo del uso de For

En este video se verá el uso de for. Puede copiar el script aquí:

#! /bin/bash 
# Copyright (c) 2015, J. Daniel Cordero

# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.

# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

numbers="1 2 3 4 5 6 7 8 9 10"

for i in $numbers
do
    echo $i
done

Última actualización: septiembre 06, 2018

Deja un comentario