Secuencias de comandos Bash: bucle while
A mientras bucle es una declaración que itera sobre un bloque de código hasta que la condición especificada se evalúa como falsa. Podemos usar esta declaración o bucle en nuestro programa cuando no sabemos cuántas veces la condición se evaluará como verdadera antes de evaluarse como falsa.
Tabla de contenidos
- La sintaxis de un bucle while en BASH Scripting
- Ejemplo de bucle usando la declaración while en Linux
- Leer un archivo con un bucle while
- Bucle while infinito
- Bucle while para iterar un número fijo de veces
- Lea el argumento de la línea de comandos con las opciones getopts
- Bucle while estilo C
- Bucle while para realizar operaciones en un archivo
- Escribir en un archivo usando un bucle while
- Romper y continuar usando while Loop
- Preguntas frecuentes
La sintaxis de un bucle while en BASH Scripting
while [ condition ]; do # statements # commands done
Si la condición es verdadera, los comandos dentro del bloque while se ejecutan y se repiten nuevamente después de verificar la condición. Además, si la condición es falsa, las declaraciones dentro del bloque while se omiten y las declaraciones posteriores al bloque while se ejecutan.
Ejemplo de bucle usando la declaración while en Linux
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/usr/bin/bash
a=7
mientras [ $a -gt 4 ];
hacer
echo $a
((a-))
hecho
eco Fuera del circuito
Explicación:
-
#!/usr/bin/bash>: Esta línea se llama shebang e indica la ruta al intérprete que debe usarse para ejecutar el script. En este caso, especifica que se debe utilizar el shell Bash. -
a=7>: Inicializa una variable denominadaa>con el valor 7. -
while [ $a -gt 4 ];>: Inicia un bucle while que continúa mientras el valor dea>es mayor que 4. -
do>: Marca el comienzo del bloque de código que se ejecutará dentro del ciclo while. -
echo $a>: Imprime el valor actual de la variable.a>a la consola. -
((a--))>: Disminuye el valor dea>por 1. Esta es una forma abreviada de escribira=$((a - 1))>. -
done>: Marca el final del bloque de código para el bucle while. -
echo 'Out of the loop'>: Imprime fuera del bucle en la consola después de que se haya completado el bucle while.
Mientras bucle en Linux
En resumen, este script inicializa una variable ` a`> con el valor 7, luego ingresa un bucle while que continúa hasta ` a`> es mayor que 4. Dentro del bucle, imprime el valor actual de ` a`> y lo disminuye en 1 en cada iteración. Una vez ` a`> se convierte en 4 o menos, el bucle sale y el script se imprime Fuera del bucle en la consola.
Leer un archivo con un bucle while
Podemos leer un archivo con un bucle while en BASH. Al analizar ciertos parámetros en la condición del bucle while, podemos iterar sobre el archivo línea por línea o por otros grupos como caracteres o palabras.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/usr/bin/bash
archivo=temp.txt
mientras lee -r línea;
hacer
echo $line
hecho <$archivo
Explicación:
-
#!/usr/bin/bash>: Esta línea shebang especifica que se debe utilizar el shell Bash para interpretar el script. -
file=temp.txt>: Asigna la cadena temp.txt a la variablefile>, que representa el nombre del archivo a leer. -
while read -r line;>: Inicia un bucle while que lee cada línea del archivo especificado. -
do>: Marca el comienzo del bloque de código que se ejecutará dentro del ciclo while. -
echo $line>: Imprime el contenido de la variable.line>, que representa la línea actual que se lee del archivo en la consola. -
done>: Marca el final del bloque de código para el bucle while. -
<'$file'>: Redirige la entrada del bucle while para que provenga del archivo especificado, en este caso, temp.txt.
En resumen, este script lee cada línea del archivo temp.txt y lo imprime en la consola hasta que no quedan más líneas en el archivo. El -r> opción con el read> El comando se utiliza para garantizar que las barras invertidas en la entrada se traten como caracteres literales.
leer el archivo usando la declaración while en Linux
Usamos el comando leer para recuperar las líneas o caracteres del archivo. El comando de lectura se pasa con el argumento -r que ignora el escape de caracteres si aparece y, por lo tanto, se analiza como suyo. Leemos una línea de un archivo mencionado después de la declaración hecha. El comando de lectura lee una línea del archivo mencionado y los bucles while finalizan cuando se lee la última línea del archivo (no queda ninguna línea para leer).
Así es como podemos leer el contenido del archivo usando un bucle while en BASH.
Bucle while infinito
Para crear un bucle infinito usando una declaración de bucle while. No necesitamos poner ninguna condición en el ciclo while y, por lo tanto, el ciclo se repite infinitamente. El siguiente es el ejemplo de un bucle while infinito:
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/usr/bin/bash
mientras :
hacer
echo Un bucle infinito
# Podemos presionar Ctrl + C para salir del script
hecho
Explicación:
-
#!/usr/bin/bash>: La línea shebang especifica que se debe utilizar el shell Bash para interpretar el script. -
while :>: Inicia un bucle infinito. El:>(dos puntos) es un comando integrado del shell que siempre devuelve verdadero, creando efectivamente un bucle infinito. -
do>: Marca el comienzo del bloque de código que se ejecutará dentro del bucle infinito. -
echo 'An Infinite loop'>: Imprime la cadena Un bucle infinito en la consola en cada iteración del bucle. -
# We can press Ctrl + C to exit the script>: Este es un comentario que indica que puedes interrumpir el script presionando Ctrl + C en la terminal. Ctrl + C es una forma común de interrumpir y finalizar scripts en ejecución en la terminal. -
done>: Marca el final del bloque de código para el bucle infinito.
En resumen, este script crea un bucle infinito que repite continuamente el mensaje Un bucle infinito en la consola. El bucle se puede interrumpir y salir del script presionando Ctrl + C en la terminal.
Bucle infinito usando la declaración While en Linux
Por lo tanto, el bucle while del script se repetirá durante un tiempo infinito. Podemos romper manualmente el bucle o el script con CTRL + C.
Bucle while para iterar un número fijo de veces
Podemos usar un bucle while para iterar un número fijo de veces, podemos establecer la condición para que sea -le o menor que igual a un número, y el bucle iterará hasta que el iterador sea menor o igual al número proporcionado en la condición. Además, necesitamos incrementar el iterador manualmente para mantener el iterador del bucle funcionando, o de lo contrario el bucle continuará para siempre.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/usr/bin/bash
yo=1
# el número 4 puede ser el límite para
# iterar el ciclo
mientras [ $i -le 4 ];
hacer
echo $i
((yo++))
hecho
Explicación:
-
#!/usr/bin/bash>: La línea shebang especifica que se debe utilizar el shell Bash para interpretar el script. -
i=1>: Inicializa una variable denominadai>con el valor 1. -
while [ $i -le 4 ];>: Inicia un ciclo while que continúa mientras el valor dei>es menor o igual a 4. -
do>: Marca el comienzo del bloque de código que se ejecutará dentro del ciclo while. -
echo $i>: Imprime el valor actual de la variable.i>a la consola. -
((i++))>: Incrementa el valor dei>por 1. Esta es una forma abreviada de escribiri=$((i + 1))>. -
done>: Marca el final del bloque de código para el bucle while.
mientras bucle en Linux
En el ejemplo anterior, podemos ver que el bucle se repite un número definido de veces. Como hemos inicializado el contador en 1 y la condición es iterar el ciclo hasta que el iterador sea menor o igual al número en este caso 4. Por lo tanto, podemos cambiar el número en la condición según nuestro requisito.
Lea el argumento de la línea de comandos con las opciones getopts
Podemos usar las opciones de obtención de operaciones para leer la entrada desde la línea de comando y, si hay varios argumentos, podemos verificarlos y analizarlos uno por uno usando un bucle while. getopts es una herramienta para obtener entradas del usuario desde la línea de comandos. Podemos tener múltiples opciones para analizar desde la línea de comandos y, usando getopts y bucles while, podemos crear un programa de entrada de usuarios de aspecto profesional.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/bin/bash
mientras que getopts n:a: OPT
hacer
caso ${OPT} en
n) nombre=${OPTARG} ;;
a) edad=${OPTARG} ;;
*) echo Opción no válida
salida 1;;
esac
hecho
printf Mi nombre es $nombre y tengo $edad años
Explicación:
-
#!/bin/bash>: La línea shebang especifica que se debe utilizar el shell Bash para interpretar el script. -
while getopts n:a: OPT>: inicia un bucle que utilizagetopts>para analizar las opciones de la línea de comandos. Las opciones especificadas sonn>ya>, y se espera que ambos vayan seguidos de un argumento. -
do>: Marca el comienzo del bloque de código que se ejecutará dentro del bucle. -
case '${OPT}' in>: Inicia una declaración de caso que evalúa el valor de la opción encontrada porgetopts>. -
n) name=${OPTARG};;>: Si la opción es-n>, asigna el valor del argumento correspondiente a la variablename>. -
a) age=${OPTARG};;>: Si la opción es-a>, asigna el valor del argumento correspondiente a la variableage>. -
*) echo 'Invalid option'>: Si se encuentra una opción no válida, imprime un mensaje de error en la consola. -
exit 1;;>: Sale del script con un código de estado distinto de cero, lo que indica un error. -
esac>: finaliza la declaración del caso. -
done>: Marca el final del bloque de código del bucle. -
printf 'My name is $name and am $age years old '>: Imprime un mensaje formateado en la consola usando los valores de `name`>y `age`>obtenido de las opciones de la línea de comandos.
Mientras bucle en Linux
En este caso, tenemos dos opciones a saber, el nombre y la edad, puedes tener múltiples opciones. Necesitamos especificar qué opción usaremos en las declaraciones de cambio de caso y desde la línea de comando usando la opción -shorthand. En este caso hemos utilizado -n para nombre y -a por edad . También tenemos una verificación de casos predeterminados o no válidos para garantizar que no analicemos argumentos incorrectos. Podemos asignar el valor de la opción usando el OPTARG Variable que analiza el valor proporcionado a la opción.
El bucle while aquí se usa para iterar hasta que no se pasen opciones desde la línea de comando. Verificamos las opciones -n y -a e iteramos hasta que se presiona la tecla de retorno de carro o Intro y no hay más opciones para analizar.
Bucle while estilo C
Podemos usar el bucle while con estilo C en BASH, las variables deben evaluarse con el estilo BASH pero la sintaxis general se siente como C. Podemos usar operadores como, <= y así sucesivamente en la condición del bucle while y, por lo tanto, se llama como el bucle while estilo C.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim c-style-while.sh
#!/bin/bash
yo=0
mientras ((yo <12))
hacer
echo $i
((yo+=2))
hecho
estilo-c-mientras
En este ejemplo, podemos ver que el bucle while tiene una condición con operadores que no son bash como -le, -ge, etc., en lugar de eso usamos operadores estilo C en la condición. El resto del bucle es el bucle básico como en BASH, la variable o iterador i se incrementa en dos como podemos ver en la última declaración del cuerpo del bucle. Por tanto, el bucle se repite 5 veces.
Bucle while para realizar operaciones en un archivo
Podemos realizar operaciones en un archivo, como leer solo una parte particular de un archivo. Si tenemos columnas que tienen un formato particular, podemos usar variables para asignarlas e imprimirlas en una fila de datos.
Aquí está el nombre de archivo de ejemplo wh.txt
vim wh.txt
Creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim file-while.sh
Tipo de idioma liberado
Python general 1991
JavaScript web 1995
Java móvil 1995
Óxido incrustado 2010
Ir al backend 2007
Creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim file-while.sh
#!/bin/bash
mientras lees a b c
hacer
echo $b – $a
hecho
Mientras bucle en Linux
En este ejemplo, tenemos tres filas, leemos el contenido asignándolos a las variables a, byc, puede ser lo que quieras pero recuerda usarlos en el cuerpo del bucle. Podemos seleccionar una columna particular como b y a y podemos imprimir o realizar cualquier operación en ellas. Sin embargo, esto no se reflejará en el archivo, ya que son solo las variables del script local.
Escribir en un archivo usando un bucle while
Podemos escribir en un archivo según la entrada del usuario en un bucle while. Podemos usar el bucle while para iterar hasta que salgamos manualmente del bucle usando CTRL + D para guardar los cambios en el archivo o CTRL + C para evitar escribir en el archivo. Usamos el comando de lectura para ingresar el texto desde la línea de comando y analizarlo en el archivo.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim write-wh.sh
#! /bin/bash
archivo=wh.txt
echo Ingrese el contenido en el archivo $file
mientras lee la línea
hacer
eco $línea>> $archivo
hecho
mientras bucle en Linux
Entonces, en el ejemplo anterior, pudimos ingresar texto en un archivo usando un bucle while y un comando de lectura. Para salir del bucle y guardar los cambios en el archivo, usamos las teclas CTRL+D, y para salir del bucle sin guardar nada en el archivo podemos usar las teclas CTRL+C. Así ingresamos el texto desde la línea de comando al archivo de texto usando el comando de lectura y un bucle while.
Romper y continuar usando while Loop
Romper y continuar son esenciales en un programa que trata con declaraciones de bucle, ya que controlan el flujo de las declaraciones de bucle sin condiciones explícitas.
Declaración de ruptura en el bucle While
Usamos declaraciones break para salir del ciclo sin esperar a que la condición del ciclo while se evalúe como falsa. Esta declaración se puede utilizar dentro de un bloque de bucle. Esto se puede utilizar para salir de un bucle infinito con una condición programática dentro del bucle y así mantener el control del bucle.
Por ejemplo, tenemos un script que cuenta desde 1 y para siempre. Pero podemos salir del ciclo mediante programación usando una declaración break dentro del cuerpo del ciclo con una condición.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/usr/bin/bash
yo=1
mientras :
hacer
echo $i
si [ $i -eq 20 ]; entonces
echo Este es el final del ciclo
romper
ser
((yo++))
hecho
Romper declaración mientras se realiza un bucle en Linux
Del script y la ejecución, podemos ver que pudimos romper o salir de un bucle infinito con una declaración condicional y la declaración break. Por lo tanto, la declaración break se utiliza para obtener el flujo de control de un programa/script desde dentro de un bucle while para salir del bucle sin que la condición del bucle se evalúe como falsa.
Continuar declaración en While Loop
Podemos usar la declaración de continuación para hacer lo opuesto a la declaración de interrupción. Saltará al inicio del bloque de bucle y repetirá nuevamente. Esto se puede utilizar para omitir ciertos comandos en determinadas condiciones y, por lo tanto, permite un cambio en el flujo del bucle.
Por ejemplo, si tenemos una variable inicializada en 1 y queremos mostrar solo los números divisibles por cinco o en un patrón determinado siguiendo una condición, podemos usar declaraciones de continuación para hacer precisamente eso. Esto permite iterar sobre el bucle de la manera deseada.
Primero, creamos un archivo de texto usando un editor de texto en Linux, en este caso estamos usando el editor de texto `vim`.
vim while.sh
#!/usr/bin/bash
yo=1
mientras [ $i -lt 30 ];
hacer
((yo++))
si [[ $(( $i % 5 )) -ne 0 ]];
entonces
continuar
ser
echo $i
hecho
Continuar declaración en el bucle While en Linux
Como podemos ver, la instrucción continue, salta al principio del bloque e inicia la ejecución de los comandos omitiendo los siguientes comandos dentro del bloque. El bucle while itera sólo por el valor de variable yo siendo menor que 30, por lo tanto la condición if verifica si el variable yo es divisible por 5, y si no lo es, repetimos nuevamente usando continuar e incrementamos el valor de la variable i. El variable yo solo se repite si es divisible por 5, por lo tanto, la condición if se evalúa como falsa y no encontramos una declaración de continuación y continuamos con el flujo normal del ciclo. Esto se hace para evitar el registro de cada número y solo imprimir los números que no siguen un patrón o condición en la declaración if u otras declaraciones condicionales.
Preguntas frecuentes
1. ¿Qué es un ` while`> ¿Bucle en las secuencias de comandos Bash?
A while> loop es una declaración de flujo de control en secuencias de comandos Bash que permite que un determinado bloque de código se ejecute repetidamente siempre que una condición especificada sea verdadera. El bucle proporciona una forma de automatizar tareas repetitivas y es una construcción fundamental en scripting y programación.
2. ¿Cómo funciona la sintaxis de un ` while`> ¿Buscar bucle en Bash?
La sintaxis básica de un while> El bucle en Bash es el siguiente:
mientras [condición]
hacer
# Código a ejecutar mientras la condición sea verdadera
hecho
El ` condition`> Es una prueba que ocurre antes de cada iteración del ciclo. Si la condición es verdadera, se ejecuta el código dentro del bucle. Si la condición es falsa, el bucle sale y el script continúa con el siguiente comando después de ` done`> declaración.
3. ¿Cuál es el papel del ` (( ... ))`> construir en un Bash while> ¿bucle?
El ` (( ... ))`> La construcción en Bash se utiliza para operaciones aritméticas. En el contexto de un ` while`> bucle, a menudo se emplea para evaluar condiciones aritméticas.
Por ejemplo: ` ((i <10))> `> comprueba si la variable ` i`> es menor que 10. Esto le permite usar expresiones aritméticas directamente en la condición de bucle, lo que lo hace especialmente útil cuando se trata de comparaciones numéricas.
4. Cómo crear un bucle infinito usando ` while`> en fiesta?
Se puede crear un bucle infinito en Bash proporcionando una condición que siempre se evalúe como verdadera.
Por ejemplo:
si bien es cierto
hacer
# Código para el bucle infinito
hecho
Alternativamente, puede usar una constante distinta de cero en la condición, como ` while [ 1 ]`> , para lograr el mismo resultado. Los bucles infinitos son útiles en situaciones en las que se requiere una ejecución continua hasta que se interrumpe manualmente.
Conclusión
En este artículo analizamos el bucle while de secuencias de comandos BASH, que demuestra ser una herramienta versátil para ejecutar un bloque de código repetidamente en función de una condición específica. La sintaxis básica implica definir la condición entre corchetes, lo que permite iteraciones flexibles. El artículo explora diversas aplicaciones de los bucles while, incluida la lectura de archivos, la creación de bucles infinitos, iteraciones fijas, el análisis de argumentos de la línea de comandos y el uso de declaraciones break y continue. Desde la sintaxis de estilo C hasta la escritura de archivos interactivos, cada ejemplo demuestra la adaptabilidad del bucle para abordar una variedad de necesidades de secuencias de comandos. Esta descripción general completa subraya la importancia del bucle while en las secuencias de comandos BASH, ya que proporciona un mecanismo sólido para la repetición controlada y la ejecución eficiente del código.