Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Cómo hacer bucles en Shell Script

⋆ Cómo hacer bucles en Shell Script

Los Bucles, en programación, son uno de los pilares fundamentales en los cuales nos apoyamos a la hora de desarrollar cualquier tipo de aplicación, bien sea una web, una APP para Android o IOS, una aplicación de escritorio etc... En el siguiente artículo, os voy a enseñar como usar cada uno de los tipos de bucles que existen, acompañados de pequeños ejemplos...

Seguid leyendo si queréis aprender a realizar vuestros primeros scripts de Bash con Bucles o Loops...

 

 

¿QUÉ ES UN BUCLE EN PROGRAMACIÓN?

Los bucles en Bash (y en cualquier otro lenguaje de programación) son sumamente importantes. En este pequeño y sencillo tutorial, os voy a enseñar como utilizar los bucles en bash con algún pequeño ejemplo y su sintaxis.

Los bucles nos permiten realizar una serie de acciones continuamente o hasta que una condición se cumpla o deje de cumplirse. Son sumamente útiles para operaciones donde hay que repetir n veces un tipo de acción en concreto.

Existen básicamente 3 tipos de bucles en Bash. Existen otros comandos que intervienen también en los bucles y que veremos de forma rápida a continuación.

Loops Bash

 

 

Los bucles en programación, son sumamente importantes.

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un equipo con GNU/Linux

 

 

2.- BUCLES WHILE

Posiblemente, uno de los bucles mas sencillos de entender y de trabajar con ellos es el bucle while. Lo que hace este bucle es, mientras que la expresión sea verdadera, se ejecutarán X líneas de código que queramos. La sintaxis de este bucle es la siguiente:

while [ <condición o expresión> ]
do
<comandos>
done

 

 

En el siguiente ejemplo, podemos ver que, mientras la variable $contador sea menor o igual a 15, imprimiremos un mensaje por pantalla. Una vez que la variable tenga el valor 15, el bucle finalizará y el script imprimirá otro mensaje de finalización.

#!/bin/bash
# Bucle básico While
contador=1
while [ $contador -le 15 ]
do
     echo "Este es el mensaje número" $contador
     ((contador++))
done
echo "Bucle finalizado"
 

 

 

Si guardamos el código en un script, por ejemplo script_while.sh y lo ejecutamos (hay que darle permisos de ejecución chmod +x), veremos que la salida del script es la siguiente:

[raul@localhost /home/raul/]$ ./script_while.sh
Este es el mensaje número 1
Este es el mensaje número 2
Este es el mensaje número 3
Este es el mensaje número 4
Este es el mensaje número 5
Este es el mensaje número 6
Este es el mensaje número 7
Este es el mensaje número 8
Este es el mensaje número 9
Este es el mensaje número 10
Este es el mensaje número 11
Este es el mensaje número 12
Este es el mensaje número 13
Este es el mensaje número 14
Este es el mensaje número 15
Bucle finalizado

 

 

3.- BUCLES UNTIL

Otro de los bucles es el llamado bucle until y muy similar al bucle while. Lo que hace este bucle es, hasta que no se cumpla una expresión dada, se ejecutarán X líneas de código que queramos. La sintaxis de este bucle es la siguiente:

#!/bin/bash
until [ <condición o expresión> ]
do
     <comandos>
done

 

 

En el siguiente ejemplo, la variable $contador se inicializa con un valor de 1. Hasta que la variable $contador no sea superior a 10, la variable $contador se incrementará en +1 hasta que sea superior a 10. El código es el siguiente:

#!/bin/bash
# Bucle básico Until
contador=1
until [ $contador -gt 10 ]
do
     echo "El valor de la variable $contador es: " $contador
     ((contador++))
done
echo "Bucle finalizado. Enhorabuena!"

 

 

Si guardamos el código en un script llamado script_until.sh y lo ejecutamos (hay que darle permisos de ejecución chmod +x), veremos que la salida del script es la siguiente:

[raul@localhost /home/raul]$ ./script_until.sh 
El valor de la variable $contador es: 1
El valor de la variable $contador es: 2
El valor de la variable $contador es: 3
El valor de la variable $contador es: 4
El valor de la variable $contador es: 5
El valor de la variable $contador es: 6
El valor de la variable $contador es: 7
El valor de la variable $contador es: 8
El valor de la variable $contador es: 9
El valor de la variable $contador es: 10
Bucle finalizado. Enhorabuena!

 

 

4.- BUCLES FOR

El bucle for es algo diferente a los bucles vistos anteriormente. Lo que hace este bucle es, para cada uno de los elementos que le pasemos al bucle, ejecutaremos N acciones. La sintaxis del bucle for es la siguiente:

for variable in <lista>
do
     <comandos>
done

 

 

En el siguiente ejemplo, vamos a crear una serie de elementos (marchas de coches) que asignaremos a la variable coche y que posteriormente iremos recorriendo uno a uno para mostrar el nombre de cada una de las marcas. Lo que hace el bucle básicamente es, para cada uno de los elementos, hacer N cosas:

#!/bin/bash
# Bucle básico For
coches='Ford Seat Mercedes Fiat Opel'
print "El listado de marcas de coches es:"
for coche in $coches
do
     echo $coche
done
echo "Bucle <for> finalizado!"

 

 

 

 

Si guardamos el código en un script llamado listado_coches.sh y lo ejecutamos (hay que darle permisos de ejecución chmod +x), veremos que la salida del script es la siguiente:

[raul@localhost /home/raul]$ ./listado_coches.sh
El listado de marcas de coches es:
Ford
Seat
Mercedes
Fiat
Opel
Bucle <for> finalizado!

 

 

Existe otra forma de poder utilizar el bucle for y es muy similar a la que se usa en otros lenguajes de programacion, como C, Java etc ... La sintáxis de esta otra forma es la siguiente:

for (( EXPRESION1; EXPRESION2; EXPRESION3 ))
do
comando1
comando2
comando3
done

 

 

En el siguiente script mostraremos por pantalla un mensaje desde que la variable $var valga 1 hasta que tome el valor de 5.

#!/bin/bash
for (( var=1; var<=5; var++ ))
do
echo "Te han tocado $var millones de euros!"
done

 

 

Si guardamos el código en un script llamado bucle_for.sh y lo ejecutamos (hay que darle permisos de ejecución chmod +x), veremos que la salida del script es la siguiente:

[raul@localhost /home/raul]$ ./bucle_for.sh
Te han tocado 1 millones de euros!
Te han tocado 2 millones de euros!
Te han tocado 3 millones de euros!
Te han tocado 4 millones de euros!
Te han tocado 5 millones de euros!

 

 

El bucle for, también puede usarse con rangos de valores. En el siguiente ejemplo, la variable $variable tomará los valores entre 10 y 17 incrementando de 1 en 1:

#!/bin/bash
# Bucle básico con rangos
for variable in {10..17}
do
echo $variable
done
echo "Bucle finalizado!"

 

 

Si guardamos el código en un script llamado script_rangos1.sh y lo ejecutamos (hay que darle permisos de ejecución chmod +x), veremos que la salida del script es la siguiente:

[raul@localhost /home/raul]$ ./script_rangos1.sh 
10
11
12
13
14
15
16
17
Bucle finalizado!

 

 

También se le puede indicar el step o paso entre cada incremento. En este caso la variable $variable tomará valores entre 10 y 20 incrementando el valor de 2 en 2.

#!/bin/bash
# Bucle básico con rangos y pasos
for variable in {10..20..2}
do
echo $variable
done
echo "Bucle finalizado!"

 

 

Si guardamos el código en un script llamado script_rangos2.sh y lo ejecutamos (hay que darle permisos de ejecución chmod +x), veremos que la salida del script es la siguiente:

[raul@localhost /home/raul]$ ./script_rangos2.sh 
10
12
14
16
18
20
Bucle finalizado!

 

 

5.- BREAK Y CONTINUE EN BUCLES

Aunque no son realmente ningún tipo de bucle, break y continue se suelen utilizar dentro de los bucles vistos anteriormente para obligar al bucle a seguir o salirse de la ejecución. En el siguiente ejemplo, $a toma valores entre 0 y 10, pero si a=0, el bucle finalizará:

#!/bin/bash
a=0

while [ $a -lt 10 ]
do
echo "Valor: $a"
((i++))
if [[ "$a" == '5' ]]; then
break
fi
done

 

 

 
[raul@localhost /home/raul]$ ./script_break.sh
Valor: 0
Valor: 1
Valor: 2
Valor: 3
Valor: 4

 

 

En el siguiente ejemplo, $a toma valores entre 0 y 10, y se mostrará un mensaje solo cuando a sea diferente de 7:

#!/bin/bash
a=0

while [ $a -lt 10 ]
do
((a++))
if [[ "$a" == '7' ]]; then
continue
fi
echo "Valor: $a"
done
echo 'Finalizado!'

 

 

Si ejecutamos el código anterior, la salida que veremos es la siguiente:

[raul@localhost /home/raul]$ ./script_continue.sh
Valor: 1
Valor: 2
Valor: 3
Valor: 4
Valor: 5
Valor: 6
Valor: 8
Valor: 9
Valor: 10
Finalizado!

 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

     

Código de seguridad
Refescar