30 ejemplos de bucles Bash

En bash se utilizan tres tipos de bucles para diversos fines. Estos son para, mientras y hasta bucles. Los diferentes usos de estos bucles se explican utilizando 30 ejemplos diferentes en este artículo.

Usos de bucles Bash:

  1. Uso de bucle for para leer elementos de una lista
  2. Uso de bucle for para leer una matriz
  3. Uso de bucle for para leer una lista de valores de cadena con espacios
  4. Uso de bucle for en {INICIO..FINAL..Rango DE INCREMENTO}
  5. Usando for loop in {INICIO..FINAL..Rango de incremento} yendo hacia atrás
  6. Usando bucle for con 3 partes y contador de condiciones
  7. Usando bucle for con 3 partes y múltiples condiciones y acciones con coma
  8. Usando bucle for infinito
  9. Usando bucle for con interrupción y continuación condicionales
  10. Usando bucle for para leer nombres de archivos bucle para leer la salida del comando find
  11. Usar bucle for para leer nombres de archivos de un directorio recursivamente
  12. Usar bucle for para leer nombres de archivos de un directorio recursivamente con condición
  13. Ejecutar el bucle hasta que el archivo existe
  14. Usar bucle for basado en la salida de la lista de paquetes comando
  15. Usar bucle for para leer cada línea de un archivo
  16. Usar bucle for para leer cada línea de un archivo basado en una coincidencia condicional
  17. Usar bucle while con un contador
  18. Usar bucle while con entrada de usuario y salir al seleccionar salir de un menú
  19. combinar bucles while con getopts
  20. Usar un bucle hasta con contador
  21. Terminar un bucle hasta basado en la entrada del usuario
  22. Usar bucles while anidados
  23. Usar un bucle hasta para dormir/esperar la tarea en segundo plano iniciado en script
  24. Usando bucle while para leer pid de salida ps que no está terminada
  25. Buscando cualquier cadena en un archivo usando bucle y salir
  26. Combinando bash con curl para evaluar datos de URL
  27. Leyendo datos de un puerto enviado por netcat usando bucle while
  28. URL de ping usando bucle
  29. Ejecutar la parte superior en modo por lotes utilizando un bucle y grabar la salida

Utilizando el bucle for para leer elementos de una lista

El uso más simple del bucle ‘for’ es leer una lista de datos numéricos o de cadena. La lista de datos numéricos se itera mediante el bucle for-in en el siguiente ejemplo. Aquí, se leerán cuatro números en la variable, $n en cada paso del bucle y se imprimirán. Cree un archivo bash con el siguiente script y ejecútelo desde el terminal.

#!/bin / bash
# bucle for-in para leer una lista de números
para n en 10 11 17 25
do
# Imprimir cada número
echo «El número es n n»
hecho

Salida:

Ejecutar el script.

$ bash for1.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usando bucle for para leer una matriz

Cualquier variable de matriz contiene una lista de datos que se pueden iterar muy fácilmente usando bucle for-in. El siguiente ejemplo muestra el uso del bucle for-in para leer una matriz de datos de cadena. Aquí, cada valor de matriz obtendrá la variable, language language e imprimirá un mensaje basado en el idioma en cada iteración.

#!/bin/bash
languages=(«Bash PERL Python PHP»)
for language in languages languages
do
if
then
echo «echo language es un lenguaje de programación web»
else
echo «echo language es un lenguaje de scripting»
fi
done

Salida:

Ejecute el script.

$ bash for2.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usando bucle for para leer una lista de valores de cadena con espacios

Cuando una lista de una cadena es leída por bucle for-in y cualquier valor de cadena contiene espacio, los valores se dividen en palabras basadas en el espacio si el valor de cadena no se cita con una comilla simple o doble. El siguiente ejemplo muestra cómo una lista de valores de cadena con espacio puede ser leída por el bucle for-in. Aquí, un valor de la lista contiene espacio y se imprime con el espacio en la salida.

#!/bin / bash
#bucle for-in para leer la lista de cadenas con espacio
para so en «Ubuntu» «Linux Mint» «Fedora»»CentOS»
do
#Imprimir cada cadena
echo «Sistema operativo – os os»
hecho

Salida:

Ejecutar el script.

$ bash for3.sh

Aquí, el valor de cadena, ‘Linux Mint’ se imprime correctamente.

Ir al principio

Usando for loop in {INICIO..FINAL..Rango DE incremento}

Otro uso del bucle for-in es leer la matriz de rangos. En el siguiente ejemplo, se usa un bucle for para leer un rango de datos de 10 a 30 que se incrementa en 5 en cada paso. A continuación, el script imprimirá los números en el rango que sean divisibles por 10.

#!/ bin / bash
# Lee un rango usando for loop
para num in {10..30..5}
hacer
# Comprobar el número es divisible por 10 o no
if (( $num%10==0 ))
a continuación,
echo «$num es divisible por 10»
fi
hecho

Salida:

Ejecutar la secuencia de comandos.

$ golpe para 4.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usando for loop in {INICIO..FINAL..Rango de incremento} yendo hacia atrás

El rango de datos se puede leer hacia atrás usando un bucle for-in donde el valor inicial del rango es mayor que el valor final del rango. En el siguiente ejemplo, el rango comenzará desde 50 y terminará hasta 30. El valor de n num se reducirá en 10 en cada paso del bucle. El script imprimirá los números del rango que sean divisibles entre 5 y 10.

#!/bin / bash
echo «Los siguientes números son divisibles por 5 y 10»
# Leer un rango usando for loop
para num in {50..30..10}
hacer
# Comprobar que el número es divisible por 5 y 10 o no
si ((n num%5==0 && $num%10==0 ))
luego
echo-n «n num»
fi
hecho
echo «Hecho»

Salida:

Ejecute el script.

$ bash for5.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usar bucle for con 3 partes y contador de condiciones

Bash admite bucle for con tres partes como otros lenguajes de programación estándar. La primera parte contiene la inicialización, la segunda parte contiene la condición de terminación y la tercera parte contiene la operación de incremento o decremento. Este bucle se utiliza principalmente cuando el número de iteración está definido previamente. En el siguiente ejemplo, el bucle for iterará 50 veces y calculará la suma de 1 a 50. El resultado de la suma se imprimirá como salida.

#!/ bin / bash
# Inicializar la variable
sum=0
# El bucle iterará 50 veces
for (( n=1; n<=50; n++ ))
do
# Agregar el valor de suma con el siguiente valor de n
((sum=sum sum+n n))
hecho
# Imprimir el resultado
echo «La suma de 1 a 50 es sum suma»

Salida:

Ejecute el script.

$ bash for6.sh

La suma de 1 a 50 se muestra en la salida.

Usar bucle for con 3 partes y múltiples condiciones y acciones con coma

El bucle For con tres partes se puede definir con múltiples inicializaciones, condiciones de terminación y acciones. El siguiente ejemplo muestra el uso de este tipo de bucle. Aquí, las variables x x e y y se inicializan por 5 y 25. El bucle continuará hasta que el valor de x x sea menor o igual a 20 y el valor de $y sea mayor que 5. El valor de $x se incrementará en 5 y el valor de $y disminuirá en 5 en cada iteración del bucle. El valor actual de $x e y y en cada paso se imprimirá como salida.

#!/bin/bash
# Bucle iterará basa en dos condiciones
para (( x=5,y=25; x<=20 && y>5; x+=5,y=5 ))
hacer
echo «El valor actual de x=$x y y=$y»
hecho

Salida:

Ejecutar la secuencia de comandos.

$ bash for7.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usando Infinito para bucle

Cuando cualquier bucle se define sin ninguna condición de terminación, el bucle funciona como un bucle infinito. El siguiente ejemplo muestra el uso de bucle for infinito que no contiene ninguna parte de inicialización, terminación y acción. Este tipo de bucle for se define por punto y coma doble (;;). El siguiente script continuará el bucle hasta que el usuario escriba ‘quit’ como entrada. El script imprimirá cualquier número del 1 al 20 que tome como entrada, de lo contrario, imprimirá «El número está fuera de rango»

#!/bin/bash
# Declarar bucle infinito
para (( ; ; ))
do
# Tomar una entrada
echo «Introducir un número entre 1 y 20»
leer n
# Establecer la condición de terminación del bucle
if
luego
echo «Programa terminado»
salir 0
fi
# Comprobar el rango de números
if ((n n < 1 | | n n > 20 ))
luego
echo «El número está fuera de rango»
else
echo «El número es n n»
fi
hecho

Salida:

Ejecute el script.

$ bash para 8.sh

Aquí, 6 se toma como primera entrada que es un número válido, 22 se toma como segunda entrada que es un número no válido y quit se toma como tercera entrada que termina el script.

Ir al principio

Usando bucle for con interrupción condicional y continuar

La instrucción ‘continue’ se usa para omitir alguna parte del bucle basada en cualquier condición y la instrucción’ break ‘ se usa para terminar el bucle basado en cualquier condición. El siguiente ejemplo muestra los usos de estas instrucciones en un bucle for. Aquí, el bucle se utiliza para leer una lista de datos de cadena y cada valor de la lista se almacena en la variable $alimentos. Cuando el valor de food food es ‘Sopa’, continuará el bucle sin imprimir el valor. Cuando el valor de food food es ‘Pasta’, entonces terminará el bucle. Cuando $food contiene cualquier valor que no sea’ Sopa ‘y’ Pasta’, imprimirá el valor. Por lo tanto, el script imprimirá dos valores de la lista como salida.

#!/bin/bash
# Declarar un bucle con una lista
para comida en Sopa de pizza, Hamburguesa, Pasta, Fideos
hacer
# Establecer condición para continuar
si
luego
continuar
# Establecer condición para romper
elif
luego
romper
else
echo «food la comida es mi favorita»
fi
hecho

Salida:

Ejecute el script.

$ bash for9.sh

Aquí, se omiten dos valores de la lista. ‘Sopa ‘no se imprime para la declaración continuar y’ Pasta ‘ no se imprime para la declaración break.

Ir al principio

Usando for loop para leer nombres de archivo globbing

Los nombres de archivo o el contenido particular de un archivo se pueden buscar usando globbing. Utiliza diferentes tipos de caracteres comodín para hacer coincidir cualquier nombre de archivo o buscar contenido en el archivo. Todos los archivos con extensión txt de la ubicación actual se imprimen con el siguiente ejemplo. Cuando ejecute el script, todos los nombres de archivo coincidentes se imprimirán sin nueva línea como salida.

#!/bin / bash
# Loop buscará en todos los archivos de texto y almacenará cada nombre de archivo en file file
para el archivo en»*.txt»;
do
# Imprime el nombre del archivo
echo file file;
hecho

Salida:

Ejecuta el script.

$ bash for110.sh

Ir al principio

Usar el bucle for para leer la salida del comando find

El comando’ find ‘ se usa para diferentes propósitos en bash. En el siguiente ejemplo, el comando ‘find’ se usa para leer todos los nombres de archivo de texto de la ubicación actual. Aquí, la opción ‘- name ‘ para usar en búsquedas que distinguen entre mayúsculas y minúsculas. Por lo tanto, el script imprimirá los nombres de archivo de la ubicación actual que tengan el ‘.extensión txt con cualquier nombre. Aquí, la variable IFS se utiliza para definir la nueva línea como separador de campos e imprimir el valor de file file en cada línea.

#!/ bin / bash
# Establecer separador de campos
IFS=IFS ‘\n’;
# Leer los archivos de un directorio
para el archivo en find (find-name»*.txt»); do
echo file file
done
# separador de campos Uunset
IFS sin configurar;

Salida:

Ejecute el script.

$ bash for11.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usando for loop para leer nombres de archivos de un directorio recursivamente

El comando’ find ‘ se puede usar para leer todos los archivos y subcarpetas de un directorio en particular. El siguiente ejemplo muestra el uso del comando ‘find ‘para leer todos los nombres de archivo y directorios bajo el directorio’ mydir’. Aquí, la variable IFS se usa para imprimir el valor de fil filename con ‘nueva línea’ como en el ejemplo anterior.

#!/ bin / bash
# Establecer separador de campos
IFS = \ ‘\ n’;
# Leer los archivos de un directorio
por nombre de archivo en $(find «midirectorio»)
hacer
echo «$nombre»
hecho
# Unset separador de campo
unset IFS;

Salida:

Ejecutar la secuencia de comandos.

$ bash for12.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

El uso de bucle for para leer los nombres de archivo de un directorio recursivamente con la condición

el bucle’ for ‘con el comando’ find ‘ se puede usar para imprimir som +

e nombres de archivo particulares de un directorio basados en cualquier condición. el comando ‘find’ se usa con una condición en el siguiente ejemplo. Buscará solo nombres de archivos de texto del directorio mydir. Aquí, la opción ‘ – iname ‘se usa con el comando’ find ‘ para una búsqueda que no distingue entre mayúsculas y minúsculas. Eso significa que todos los archivos con la extensión ‘ txt ‘ o ‘ TXT ‘ se emparejarán e imprimirán como salida. Aquí, la variable IFS se usa para imprimir el valor de fil filename con ‘nueva línea’ como en el ejemplo anterior.

#!/ bin / bash
# Establecer separador de campos
IFS=IFS ‘\n’;
# Leer todos los archivos de texto de un directorio
para el nombre del archivo en $(buscar el nombre de mi-iname’*.txt’); do
echo «$nombre»
hecho
# Unset separador de campo
unset IFS;

Salida:

Ejecute el siguiente comando para mostrar la lista de archivos y carpetas del directorio mydir.

$ ls mydir

Ejecute el script.

$ golpe para 13.sh

Hay tres archivos de texto en el directorio que se muestran en la salida.

Ir al principio

Ejecutar el bucle hasta que el archivo exista

Cualquier nombre de archivo que exista o no se comprueba en el siguiente ejemplo mediante el bucle for infinito. En este script, un nombre de archivo tomará como entrada en cada iteración del bucle y probará que el nombre de archivo existe en la ubicación actual o no. Si el nombre de archivo existe, el script imprimirá «El archivo existe» y continuará el bucle, de lo contrario, terminará el bucle imprimiendo el mensaje «El archivo no existe».

#!/bin / bash
# Definir bucle infinito
para(( ; ; ))
hacer
# Introducir un nombre de archivo
echo «Introducir un nombre de archivo»
leer archivo
# Comprobar que el archivo existe o no
si
entonces
echo «El nombre de archivo no existe»
salir 0
else
echo «El archivo existe»
fi
hecho

Salida:

Ejecute el script.

$ bash loop14.sh

Un nombre de archivo existente se da como primera entrada y un nombre de archivo no existente se da como segunda salida que termina el script.

Ir al principio

Usando el bucle for basado en la salida del comando lista de paquetes

La información sobre los paquetes instalados en el sistema se puede recuperar mediante el comando `apt list – -installed`. el bucle ‘ for ‘ se utiliza en el siguiente ejemplo para leer la información del paquete instalado del comando lista de paquetes e imprimir la información de cada paquete en cada línea. La variable IFS se utiliza aquí para imprimir el valor de line line con ‘nueva línea’ como en el ejemplo anterior.

# Establecer separador de campos
IFS = \ ‘\ n’;
# Leer el archivo línea por línea
por línea $(apt lista-instalado)
hacer
echo «$line»
hecho
# Unset separador de campo
unset IFS;

Salida:

Ejecutar la secuencia de comandos.

$ bash for15.sh

La salida muestra la lista de paquetes instalados.

Ir al principio

Usando for loop para leer líneas de un archivo

Hay muchas maneras de leer un archivo en bash. el comando ‘ cat ‘ se usa en el siguiente ejemplo para leer el archivo, temp.txt. Cada línea del archivo se almacenará en la variable $línea e imprimir la línea en cada iteración del bucle for. La variable IFS se utiliza aquí para imprimir el valor de line line con ‘nueva línea’ como en el ejemplo anterior.

#!/ bin / bash
# Establecer separador de campos
IFS=IFS ‘\n’;
# Leer archivo línea por línea
para entrada de línea $(temperatura de gato.txt)
do
echo»line line»
hecho
# Separador de campos no establecido
SI no establecido;

Salida:

Ejecute el script.

$ golpe para 16.sh

Ir al principio

Usar bucle for para leer líneas de un archivo con coincidencia condicional

Si desea imprimir líneas particulares de un archivo solo, debe agregar dentro del bucle que se usa para leer el archivo. El siguiente ejemplo imprime la salida formateada de cada línea de ‘ día de la semana.archivo txt basado en una condición. Si alguna línea del archivo contiene el valor, ‘Domingo’, imprimirá el mensaje ‘día festivo’, de lo contrario imprimirá el mensaje ‘día laborable’.

# Lea el archivo
para line in $(día de la semana del gato.txt)
hacer
# Comparar el valor con una cadena de datos
si
entonces
echo «line line es un día festivo»
else
echo «line line es un día laborable»
fi
hecho

Salida:

Ejecutar el script.

$ bash for17.sh

La siguiente salida aparecerá después de ejecutar el script.

Ir al principio

Usando bucle while con contador

variable la variable contador se utiliza en cualquier bucle para controlar la iteración del bucle. El siguiente ejemplo muestra el uso del bucle while con el contador. Aquí ,counter counter se inicializa a 1 y while loop iterará 5 veces e imprimirá el valor de $counter en cada iteración. el contador $se incrementa en 1 en cada paso para alcanzar la condición de terminación del bucle.

#!/ bin / bash
# Inicializar contador
contador = 1
# Iterar el bucle 5 veces
mientras
hacer
echo «Valor del contador = counter contador»
((contador++))
hecho

Salida:

Ejecutar el script.

$ loop de bash18.sh

Ir al principio

Usar bucle while con entrada de usuario y salir al seleccionar salir del menú

el bucle’ while ‘ se usa en el siguiente ejemplo para mostrar un menú de 5 opciones. Las primeras cuatro opciones se usan para realizar cuatro operaciones aritméticas basadas en la entrada del usuario y la última opción se usa para salir del script. El menú aparecerá después de proporcionar dos números como entrada. Si el usuario selecciona ‘1’, se agregarán los números de entrada. Si el usuario selecciona «2», el segundo número de entrada se restará del primer número de entrada. Si el usuario selecciona «3», los números de entrada se multiplicarán y si el usuario selecciona «4», el primer número de entrada se dividirá por el segundo número de entrada.

#!/bin/bash
# Tomar dos números
echo «Introduzca un número»
leer n1
echo «Introduzca un número»
leer n2
# Declarar un bucle infinito
while true
hacer
# Mostrar el menú
echo «1. Adición»
echo » 2. Resta «
eco » 3. Multiplicación «
eco » 4. División «
echo » 5. Salir de «
echo-n » Seleccionar cualquier número de :»
leer la entrada
# Realizar la operación basada en el valor seleccionado
si ]
entonces
((resultado=n1+n2))
elif ]
entonces
((resultado=n1-n2))
elif ]
entonces
((resultado=$n1*$n2))
elif ]
entonces
((resultado=$n1/$n2))
elif ]
entonces
exit 0
else
echo «entrada no válida»
fi
echo «El resultado es $resultado»
hecho

Salida:

Ejecutar la secuencia de comandos.

$ bash loop19.sh

La siguiente salida aparecerá después de seleccionar las opciones 2 y 5.

Ir al principio

Combinar bucles while con getopts

‘getopts’ es una función incorporada de bash que se utiliza para leer argumentos y opciones en el script bash. El siguiente ejemplo muestra el uso de la función getopts que se utiliza en un bucle while. Aquí, se utilizan tres valores de opción con getopts. Estos son ‘a’, ‘r’ y ‘c’. Se imprimirán tres mensajes diferentes para estas opciones.

#!/bin/bash
# Lee la opción y almacenar en una variable
mientras getopts «arco» opción; do
# Comprobar el valor de la opción
caso ${opción} en
a ) #opción a
echo «el Proceso es abortado»
;;
r ) #opción r
echo «el Proceso se reinicia»
;;
c ) #opción c
echo «el Proceso es continuo»
;;
\? ) # opción no válida
echo «Use: or or»
;;
esac
hecho

Salida:

Ejecute el script con opciones válidas.

$ bash loop20.sh -arc

Ejecute el script con una opción no válida.

$ bash loop20.sh-h

Ir al principio

Usando un bucle hasta con un contador

El bucle hasta se puede usar con un bucle de contador como while que se muestra antes. El siguiente ejemplo muestra el uso de un bucle hasta con un contador. Aquí, la variable counter counter se usa para controlar la iteración del bucle que se inicializa a 1. El bucle until continuará hasta el valor de counter counter a 5. Por lo tanto, el bucle se iterará 6 veces e imprimirá el valor counter contador en cada paso. counter contador se decrementará en 1 en cada paso para alcanzar la condición de terminación del bucle.

#!/ bin / bash
# Inicializar el contador
counter = 10
# Iterar el bucle 6 veces
hasta
hacer
echo «El valor actual de counter = counter counter»
((counter counter))
hecho

Salida:

Ejecutar el script .

$ bash loop21.sh

Ir al principio

Terminar hasta que el bucle se base en la entrada del usuario

Cualquier bucle termine en función de una condición particular. En el siguiente ejemplo se muestra cómo se puede terminar el bucle until en función de la entrada del usuario. De acuerdo con la condición de terminación, el bucle terminará cuando el valor de $number sea mayor que 50. El valor de number number no se incrementa dentro del bucle. Tan., el bucle continuará tomando entrada del usuario hasta que se tome un número de más de 50 como entrada.

#!/ bin / bash
# Inicializar número
número = 0
# Establecer el patrón para datos numéricos
patrón=’^+$’
# Establezca la condición de terminación
hasta
hacer
echo-n «Introduzca un número:»
número de lectura
# Compruebe que el valor de entrada es número o no
si! ]
luego
error de eco «: No es un número «
number = 0
else
echo «Ha introducido $number»
fi
hecho

Salida:

Ejecute el script.

$ bash loop22.sh

El script iterará el bucle de nuevo para el valor de entrada 4, mostrará el mensaje de error para el valor de entrada, gg y terminará el bucle para el valor de entrada 54.

Ir al principio

Usando bucles while anidados

Cuando se declara un bucle dentro de otro bucle, se llama bucle infinito. El siguiente ejemplo muestra el uso del bucle while anidado. Aquí, el primer bucle while se repetirá 2 veces y el segundo bucle while dentro del primer bucle se repetirá tres veces. La iteración total de los bucles es de 2×3 = 6 veces. las variables $i y j j se utilizan para controlar la iteración de estos bucles y los valores de estas variables en cada paso se imprimen como salida.

#!/bin/bash
# Inicializar i y j
i=1
j=1
# configure la condición de terminación para i
mientras
hacer
# configure la condición de terminación para j
mientras
hacer
# Imprimir el valor actual de i y j
printf «i=%d, j=%d\n», $i $j
((j++))
hecho
j=1
((i++))
hecho

Salida:

Ejecutar la secuencia de comandos.

$ bash loop23.sh

Ir al principio

Usando el bucle hasta para dormir/esperar que la tarea en segundo plano se inicie en el script

Cualquier proceso se puede ejecutar en segundo plano utilizando el símbolo » &». En este ejemplo se muestra cómo se puede ejecutar un proceso en segundo plano utilizando un bucle hasta y terminar el bucle en función del tiempo especificado en el comando sleep. Aquí, la variable cn cnt se usa para terminar el bucle. El bucle iniciará el proceso en segundo plano y escribirá la salida en un archivo de texto llamado «salida».txt » por 1 segundo. Después de eso, la condición de terminación del bucle se verificará y devolverá false. A continuación, el script imprimirá un mensaje, «Durmiendo Sleeping» y saldrá del script después de 3 segundos.

#!/ bin / bash
# Inicializar contador
cnt = 1
# Establecer la condición de terminación
hasta
hacer
echo «El proceso en segundo plano se está ejecutando»;
# Esperar 1 segundo
dormir 1;
((cnt++))
hecho > salida.txt &
# Espera 3 segundos
echo » Durmiendo…»
dormir 3

Salida:

Ejecute el script.

$ bash loop24.sh

Compruebe la salida del script.

$ salida cat.txt

Ir al principio

Usando bucle while para leer pid de salida ps que no está terminada

El comando’ps’ se usa para obtener información sobre todos los procesos en ejecución del sistema. Proporciona información detallada sobre cualquier proceso en ejecución, como id de usuario, PID, uso de cpu, uso de memoria, etc. El siguiente ejemplo muestra cómo se puede usar un bucle while para leer la información del proceso en ejecución relacionada con ‘apache’. Aquí, la variable IFS se utiliza para imprimir el PID de cada proceso con una nueva línea. A continuación, esperará a que el usuario presione cualquier tecla para salir del script.

#!/ bin / bash
# Establecer separador de campos
IFS = »
mientras
hacer
# Recuperar todo el id de proceso en ejecución de apache
pid = ‘ps-ef / grep» apache | / awk ‘{imprimir process 2 » el proceso está en ejecución …»}»
echo $pid
# Espere 1 segundo
sueño 1
# Presione cualquier tecla para terminar el bucle
echo «Pulse cualquier tecla para terminar»
si leer -r -N 1 ; y
break
fi
hecho
# Unset separador de campo
unset IFS

Salida:

Ejecutar la secuencia de comandos.

$ bash loop25.sh

El PID de todo el proceso en ejecución basado en ‘apache’ se muestra en la salida.

Ir a la parte superior

Buscar cualquier cadena en un archivo usando loop y salir

Crear un archivo llamado month.txt con el siguiente contenido para probar el script bash que se muestra a continuación.

mes.txt

January
February
March
April
May
June
July
August
September
October
November
December

‘mientras que’ bucle se utiliza en el ejemplo siguiente para leer mes.archivo txt línea por línea. Si alguna línea contiene el valor, ‘June’, imprimirá «Enjoy summer vacation» y terminará en el script, de lo contrario imprimirá el valor de line line.

#!/bin / bash
# Establece el nombre de archivo como
nombre de archivo = » mes.txt»
# Leer archivo línea por línea
mientras que IFS= leer-r línea
hacer
# Comprobar que el valor de la línea es igual a June
# Terminar el programa si la condición es verdadera
if ];
luego
echo «Disfrutar de vacaciones de verano»
salir 0
else
echo echo línea
fi
hecho <ename nombre de archivo

Salida:

Ejecute el script.

$ bash loop26.sh

Aquí, ‘June’ existe en el mes del archivo.txt que termina el bucle. Por lo tanto, los nombres de otros meses después de «Junio» no se leerán por el bucle.

Ir al principio

Combine bash con curl para evaluar datos de URL

Los datos se pueden transferir a o desde cualquier servidor de red en bash mediante el comando ‘curl’ con cualquier protocolo compatible como HTTP, FTP, TELNET, etc. Es una herramienta de línea de comandos. En el siguiente ejemplo se muestra cómo se puede usar el comando’ curl ‘ para evaluar los datos de la URL utilizando el bucle for. Aquí, for loop leerá una lista de url y pasará cada valor de URL en el curl e imprimirá los datos recibidos de la URL.

#!/bin / bash
# Leer cada URL de la lista
para url en «yahoo.com «»youtube.com»
do
# Imprimir código de respuesta HTTP para cada URL
echo url url; curl-v-m 5-s 1 1″ url url » | grep HTTP/1.1;
hecho

Salida:

Ejecute el script.

$ bash loop27.sh

Ir al principio

Lectura de datos de un puerto enviado por netcat mediante bucle while

El comando’ netcat ‘ se utiliza para leer y escribir datos a través de la red mediante el protocolo tcp o udp. el comando ‘ nc ‘se usa en bash para ejecutar el comando’ netcat’. El siguiente ejemplo muestra el uso del comando ‘nc’ en el bucle while. Aquí, el script intentará conectarse con el puerto 1234 usando el comando nc e imprimirá un mensaje en el otro terminal si puede conectarse. Tienes que abrir otra ventana o pestaña de terminal para ejecutar el comando, ‘nc localhost 1234’ para hacer una conexión. Después de establecer la conexión, cualquier mensaje se puede transferir de un terminal a otro terminal.

#!/bin / bash
eco «Escuchando en el puerto 1234 …»
# Leer el mensaje pasado por netcat en el puerto 1234
mientras lee texto
hacer
# Terminar el bucle si el mensaje recibido es «salir»
if ; luego
echo «Adiós»
romper
else
echo «text texto»
fi
# Imprimir mensaje cuando el puerto está conectado
hecho < <((printf «Bienvenido.\r \ nType algún mensaje:») / nc-l 1234)

Producto:

Ejecute el script en una terminal para iniciar la escucha en el puerto 1234.

$ bash loop28.sh

después, abrimos otra terminal y ejecute el siguiente comando para comunicarse con

el primer terminal.

$ nc localhost 1234

se mostrará un mensaje de bienvenida en el segundo terminal. Si el usuario escribe algo en el segundo terminal, se mostrará en el primer terminal. Cuando el usuario escriba ‘ quit ‘en el segundo terminal, el script terminará mostrando un mensaje,’ Bye ‘ en el primer terminal.

Ir al principio

URL de ping usando un bucle

Puede descubrir que cualquier sitio web está activo o no ejecutando el comando ‘ping’ con la URL del sitio. el comando ‘ping’ se utiliza con ‘google.com’ en el siguiente ejemplo para comprobar que la conexión a Internet funciona o no. El bucle While iterará 5 veces en el script e intentará hacer ping google.com. Si el servidor responde, imprimirá «Internet está funcionando» y terminará el bucle. Si el bucle se repite 5 veces y no recibe ninguna respuesta del servidor, imprimirá «Sin conexión a Internet».

#!/ bin / bash
# Establece el contador
count=5
while]
do
# Intenta hacer ping google.com
ping-c 1 google.com
c=??
# Comprobar el código de estado
si]
entonces
echo «Internet está funcionando»
salir 0
fi
# Decrementar el contador
((count count))
hecho
echo «Sin conexión a Internet»

Producto:

Ejecute el script.

$ bash loop29.sh

Obtendrá una salida similar si su conexión a Internet funciona correctamente.

Ir al principio

Ejecutar la parte superior en modo por lotes utilizando un bucle y grabar la salida

El comando’top’ es una herramienta administrativa de Linux que se utiliza para examinar el uso de los recursos del sistema, administrar diferentes tareas y supervisar los procesos en ejecución. En el siguiente ejemplo se muestra cómo puede ejecutar el comando ‘top’ en modo por lotes utilizando for loop y almacenar los registros en un archivo de texto. Aquí, la opción-b se usa para iniciar el comando’ top ‘ en modo por lotes y la opción-p se usa para establecer el ID de proceso que desea monitorear. La salida del comando’ top ‘ se almacenará en la salida.archivo txt.

#!/bin / bash
# El bucle iterará 5 veces y ejecutará el comando superior
para ((i=0; i<5; i++))
do
top-b-p 2875-n1 | tail -1 >> salida.txt
hecho

Salida:

Primero, ejecute el siguiente comando para encontrar la lista de los procesos en ejecución.

$ ps

Ahora, ejecute el script.

$ bash loop30.sh

Ejecute el siguiente comando para ver la salida del script.

$ salida cat.txt

Ir al principio

Conclusión

Los bucles se pueden usar en bash de varias maneras para realizar diferentes tipos de tareas simples o complejas. Cómo se pueden usar tres tipos de bucles en bash para diferentes tareas como buscar listas o matrices, leer archivos o cualquier salida de comandos, etc. se muestran en este artículo utilizando ejemplos muy simples. Espero que estos ejemplos ayuden al lector a entender los usos del bucle bash con más claridad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

More: