5- Bucle WHILE – PARTE 1
Primer script: Contador con bucle while
#!/bin/bash
contador=1
while [ $contador -lt 5 ]; do
echo "En esta vuelta la variable contador vale: $contador"
contador=$((contador + 1))
done
Explicación paso a paso:
-
Definición de la variable inicial:
contador=1
: Inicializa la variablecontador
con el valor 1.
-
Inicio del bucle
while
:while [ $contador -lt 5 ]; do
: Este bucle se ejecutará mientras el valor decontador
sea menor que 5 (-lt
significa "less than" o menor que).
-
Acción dentro del bucle:
echo "En esta vuelta la variable contador vale: $contador"
: Imprime en la terminal el valor actual decontador
.contador=$((contador + 1))
: Incrementa el valor decontador
en 1 en cada iteración.
-
Finalización:
- Cuando
contador
llega a 5, la condición delwhile
($contador -lt 5
) deja de ser verdadera y el bucle termina.
- Cuando
Segundo script: Verificación de edad con bucle infinito
#!/bin/bash
while true; do
read -p "Introduce tu edad: " edad
if [ "$edad" -lt "120" ]; then
echo "Bien, has puesto tu edad correctamente"
break
elif [ "$edad" -gt "121" ]; then
echo "Pon una edad correcta, inferior a 120"
else
echo "Datos incorrectos, introduce tu edad"
fi
done
Explicación paso a paso:
-
Inicio del bucle infinito:
while true; do
: Este bucle se ejecutará indefinidamente hasta que se use un comando comobreak
para salir.
-
Lectura de la edad:
read -p "Introduce tu edad: " edad
: Solicita al usuario que introduzca su edad y almacena el valor en la variableedad
.
-
Condicional para verificar la edad:
- Primera condición:
if [ "$edad" -lt "120" ];
verifica si la edad es menor a 120. Si es verdadero:- Imprime
Bien, has puesto tu edad correctamente
. - Usa
break
para salir del bucle.
- Imprime
- Segunda condición:
elif [ "$edad" -gt "121" ];
verifica si la edad es mayor a 121. Si es verdadero:- Imprime
Pon una edad correcta, inferior a 120
.
- Imprime
- Caso contrario: Si el valor introducido no es numérico o no cumple ninguna de las condiciones anteriores:
- Imprime
Datos incorrectos, introduce tu edad
.
- Imprime
- Primera condición:
-
Repetición del bucle:
- Si no se cumple la primera condición, el bucle sigue pidiendo la edad.
Tercer script: Verificación robusta con manejo de errores
#!/bin/bash
while true; do
read -p "Introduce tu edad: " edad
if [ "$edad" -lt "120" ] 2>/dev/null; then
echo "Bien, has puesto tu edad correctamente"
break
elif [ "$edad" -gt "121" ] 2>/dev/null; then
echo "Pon una edad correcta, inferior a 120"
else
echo "Datos incorrectos, introduce tu edad"
fi
done
Explicación paso a paso:
-
Estructura similar al segundo script:
- Igual que el script anterior, solicita la edad al usuario dentro de un bucle infinito y evalúa las condiciones para determinar si es válida.
-
Manejo de errores:
2>/dev/null
: Redirige los errores producidos por comandos fallidos o entradas no válidas al dispositivo nulo, evitando que se muestren en pantalla. Esto es útil para manejar casos donde el usuario introduce algo que no es un número.
-
Ventaja del manejo de errores:
- Si el usuario introduce texto en lugar de un número, el script no genera mensajes de error del sistema, solo imprime
Datos incorrectos, introduce tu edad
.
- Si el usuario introduce texto en lugar de un número, el script no genera mensajes de error del sistema, solo imprime