Estructura de control until para Linux
La estructura de control until en Linux nos permite incluir un bucle en nuestro script. Junto al bucle for y a la estructura de control while, es otra forma para repetir bloques de código.
Con el bucle until (hasta) ejecutaremos el bloque de código hasta que se cumpla la condición.
until condición
do
# Bloque de código a ejecutar mientras la condición no se cumpla
done
- Evaluamos la condición y si la condición es falsa el código se ejecuta.
- Volvemos a evaluar la condición.
Un ejemplo sencillo utilizando la estructura de control until con Linux.
#!/bin/bash
contador=1
until [ $contador -ge 6 ]
do
echo $contador
contador=$((contador + 1))
done
Ahora vamos a generar en forma de bucle un número aleatorio y lo mostraremos por nuestro terminal. Mostraremos números siempre que su valor sea diferente a un número mayor de mil pero inferior a tresmil. Entonces saldremos de la estructura de control.
Comparaciones numéricas con Bash
- -eq: Igual a (equal).
- -ne: diferente de (not equal).
- -gt: mayor que (greater than).
- -lt: Menor que (less than).
- -ge: Mayor o igual que (greater than or equal).
- -le: Menor o igual que (less than or equal).
Si el número generado es > 1000 AND < 3000 dejamos de generar números. Para realizar esta validación haremos uso del condicional if de Bash y las comparaciones numéricas.
#!/bin/bash
aleatorio=$RANDOM
until [[ $aleatorio -ge 1000 && $aleatorio -le 3000 ]]
do
echo $aleatorio
aleatorio=$RANDOM
done

Basando la condición en comandos externos
Vamos a realizar un ejemplo algo más complejo usando la estructura de control until de Linux.
Crearemos ficheros de texto en un directorio hasta que el número total de ficheros de ese directorio sea igual a quince.
ls -l | grep -v '^d' | wc -l
#!/bin/bash
condicion=$(ls -l | grep -v '^d' | wc -l)
until [ $condicion -eq 15 ];
do
nombre="$RANDOM.txt"
touch $nombre
echo "Creado el archivo $nombre"
condicion=$(ls -l | grep -v '^d' | wc -l)
done