GNU/Linux >> Tutoriales Linux >  >> Linux

Scripts de Linux:3 procedimientos para bucles while en Bash

Las secuencias de comandos de Shell, específicamente las secuencias de comandos de Bash, son una excelente manera de automatizar tareas repetitivas o tediosas en sus sistemas. ¿Por qué escribir cuando puede programar y ejecutar scripts con manos libres? Una de las muchas construcciones de secuencias de comandos es el bucle. Un bucle es una sección de código que recoge datos o genera datos y luego realiza alguna operación en los datos y luego comienza el proceso nuevamente hasta que se cumple alguna condición, el script se interrumpe o cuando se agotan los datos de entrada. Cuando utiliza secuencias de comandos de Bash, a veces es útil realizar acciones mediante algún tipo de bucle.

[ A los lectores también les gustó: Cinco formas de usar operadores de redireccionamiento en bash ]

Los comandos de bucle básicos en los scripts de Bash son for y while .

  • for los bucles se utilizan normalmente cuando tiene una lista finita conocida, como una serie de números, una lista de elementos o contadores.
  • while los bucles se pueden usar con listas, pero también son útiles para condiciones que no tener un límite conocido. Puede usarlo para ejecutar comandos mientras una condición es verdadera (o invierta la lógica y ejecútela mientras la condición es falsa).

Entonces, aunque (juego de palabras) hay diferentes formas de realizar bucles, en este artículo, me enfoco en ejemplos usando while bucles.

1. Un ciclo while simple

Imagine que está instalando una aplicación enorme y le preocupa que eventualmente use demasiado espacio en el sistema de archivos.

En lugar de ejecutar df en una terminal separada, puede ejecutar un comando simple para monitorear la utilización del disco cada segundo. Esto te permite interrumpir el proceso de instalación si ves que llegará a ese límite.

while true
do
  df -k | grep home
  sleep 1
done

En este caso, está ejecutando el ciclo con un verdadero condición, lo que significa que se ejecutará para siempre o hasta que presione CTRL-C. Por lo tanto, debe vigilarlo (de lo contrario, seguirá utilizando los recursos del sistema).

Nota :si usa un ciclo como este, debe incluir un comando como sleep para darle al sistema algo de tiempo para respirar entre ejecuciones. Ejecutar cualquier cosa sin parar podría convertirse en un problema de rendimiento, especialmente si los comandos dentro del ciclo involucran operaciones de E/S.

2. Esperando a que una condición se haga realidad

Hay variaciones de este escenario. Por ejemplo, sabe que en algún momento el proceso creará un directorio y solo está esperando ese momento para realizar otras validaciones.

Puedes tener un while bucle para seguir comprobando la existencia de ese directorio y solo escribir un mensaje mientras el directorio no existe.

Si desea hacer algo más elaborado, puede crear un script y mostrar una indicación más clara de que la condición del bucle se hizo realidad:

#!/bin/bash

while [ ! -d directory_expected ]
do
   echo "`date` - Still waiting" 
   sleep 1
done

echo "DIRECTORY IS THERE!!!"

3. Usar un bucle while para manipular un archivo

Otra aplicación útil de un while loop es combinarlo con el read comando para tener acceso a columnas (o campos) rápidamente desde un archivo de texto y realizar algunas acciones sobre ellos.

En el siguiente ejemplo, simplemente selecciona las columnas de un archivo de texto con un formato predecible e imprime los valores que desea usar para completar un /etc/hosts archivo.

Aquí se supone que el archivo tiene columnas delimitadas por espacios o tabuladores y que hay no espacios en el contenido de las columnas. Eso podría cambiar el contenido de los campos y no brindarle lo que necesita.

Tenga en cuenta que solo está realizando una operación simple para extraer y manipular información y que no le preocupa la reutilización del comando. Clasificaría esto como uno de esos "trucos rápidos y sucios".

Por supuesto, si esto fuera algo que haría repetidamente, debería ejecutarlo desde un script, usar nombres propios para las variables y todas esas buenas prácticas (incluida la transformación del nombre de archivo en un argumento y definir dónde enviar la salida, pero hoy, el tema es while bucles).

#!/bin/bash

cat servers.txt | grep -v CPU | while read servername cpu ram ip
do
   echo $ip $servername
done

[ Aprenda los aspectos básicos del uso de Kubernetes en esta hoja de trucos gratuita. ] 

Resumir

while los bucles son útiles en secuencias de comandos que dependen de que una determinada condición sea verdadera o falsa, pero también puede usarlos de forma interactiva para controlar alguna condición.

Las cosas importantes a recordar son:

Siempre tenga claro cuál es la condición para terminar el lazo. Si eso es algo que esperas hacer tú mismo con un CTRL-C , luego vigile su comando. Piensa en qué tan rápido desea que se repita cada ciclo de bucle. Si realiza alguna operación que involucre E/S dentro del ciclo, se convierte en un aspecto crítico de la planificación.

Con eso en mente, diviértete while tú puedes.


Linux
  1. Bash For Loop Guía y ejemplos

  2. Manteniéndote al tanto – Bash For, While, Until Ejemplos de bucles

  3. 12 ejemplos de Bash For Loop para su secuencias de comandos de Linux Shell

  4. Bash para ejemplos de bucle

  5. Usando y en Bash while loop

Secuencias de comandos de Bash:ciclo while y till explicado con ejemplos

Bash Scripting – Para bucle explicado con ejemplos

Bash For Loops con ejemplos

Shell Scripting para principiantes:cómo escribir Bash Scripts en Linux

Bash Scripting Part2 – Bucles for y while con ejemplos

El Bash FOR Loop explicado y simplificado