Bash hasta los bucles

Bash hasta los bucles
Hay varios tipos de bucles que se pueden usar en scripts bash. Para bucles, mientras que bucles y hasta los bucles.

Conceptualmente, el bucle for para recorrer una serie de elementos, como bucle a través de cada elemento, en una matriz o cada archivo en un directorio, etc. El bucle de while debe usarse siempre que una determinada condición sea verdadera, como el contador A es menor que un valor máximo o el tiempo de ping a un servidor es inferior a un umbral o para siempre si es cierto mientras es verdadero o mientras 1.

El bucle hasta que TUS es similar al bucle while pero con la lógica inversa. En lugar de bucle mientras una condición es verdadera, supone que la condición es falsa y se enojará hasta que se haga realidad. Son reversos el uno del otro en la expresión lógica. Elegir el bucle correcto entre un bucle de tiempo y hasta que el bucle permita que su programa sea más legible y comprensible por otros o usted mismo cuando regrese al código algún tiempo después.

Algunos ejemplos o razones típicas para usar un bucle hasta que se pueda ser, bucle hasta que el usuario ingrese 'salida'; bucle hasta que los datos generados son mayores que el volumen de datos solicitado, o hasta que se encuentren varios archivos que coinciden con su búsqueda.

La sintaxis básica de hasta que el bucle se ve así:

hasta que [condición]; hacer
LÍNEAS DE CÓDIGO
Más líneas de código
hecho

Ahora tomemos algunos ejemplos. El primer ejemplo será un factor múltiple de dos hasta alcanzar un umbral de tamaño de 1000:

#!/bin/bash
Num = 1
hasta ["$ num" -gt 1000]; hacer
echo $ num
Dejar num = num*2
hecho

El segundo ejemplo continuará haciendo ping a una URL hasta que el tiempo de respuesta sea superior a 100 milisegundos:

#!/bin/bash
Milisegundos = 0
# Haremos ping hasta que sea más lento que 1000 milisegundos
Hasta [$ milisegundos -gt 1000]
hacer
# Ejecute el ping y extraiga la línea que tiene el tiempo de ping, que termina en el tiempo = xxxx ms
Salida = 'ping -c 1 google.com | Tiempo Grep | awk -f = 'imprimir $ nf' '
Echo "Tiempo de ping: $ salida"
# Extraer el número de Milliseocnds de String como entero
MiliseConds = 'echo $ output | Awk 'imprimir $ 1' | AWK -F. 'imprimir $ 1' '
echo "número de ms = $ milisegundos"
dormir 1
hecho
Echo "El tiempo de ping excedió los 1000 milisegundos"

El tercer ejemplo tomará un archivo y combinará el archivo consigo mismo hasta que alcance el tamaño de 1 kilobyte:

#!/bin/bash
FileName = 'Basename "$ 0"'
echo $ nombre de archivo
Tmp_file = "./TMP1 "
Target_file = "./objetivo"
Cat $ FileName> $ Target_File
Filesize = 0
# Aumente el tamaño del archivo hasta 1 kb
Hasta [$ filesize -gt 1024]
hacer
# Agregue este archivo al contenido del archivo de orientación
CP $ Target_file $ tmp_file
Cat $ tmp_file >> $ target_file
Filesize = 'du $ target_file | Awk 'imprimir $ 1' '
echo "filesize: $ filesize"
dormir 1
hecho
Echo "Los nuevos archivos se alcanzan el objetivo de 1KB"

El cuarto ejemplo le pedirá al usuario la entrada de su nombre hasta que escriba la salida para dejar el programa:

#!/bin/bash
Respuesta = "foo"
# Aumente el tamaño del archivo hasta 1 kb
Hasta ["$ respuesta" = "salir"]
hacer
echo -n "Ingrese su nombre o 'Salir' para dejar este programa:"
Leer respuesta
Si ["$ respuesta" != "Salir"]; entonces
echo "hola $ respuesta"
FI
hecho
Echo "Gracias por jugar este juego"

CONCLUSIÓN

El punto clave es usar HASTA bucle para que su código sea más claro cuando se espera que la condición sea siempre falsa y luego desea detener su acción de bucle cuando la condición se vuelve verdadera. En otras palabras, continúa bucle HASTA en algún momento. Con esta perspectiva espero que sus guiones de Bash puedan ser más claros y que haya aprendido algo con este artículo. Gracias.