En los 101 anteriores de shell scripting, cubrimosarreglosyvariablesen scripts de shell. En este tutorial, cubriremos elbucle while en script de shell.
Un ciclo while en los scripts de shell se usa para repetir las instrucciones varias veces hasta que la condición del ciclo se mantenga verdadera. Los bucles tienen muchos casos de uso en aplicaciones del mundo real, ya que los creamos para automatizar tareas repetitivas. Repasemos algunos de los casos de uso y aprendamos a usar el ciclo while en scripts de shell.
Tabla de contenido
- Sintaxis de bucle while en scripts de shell
- Operadores booleanos cuando se trabaja con scripts de shell
- Creación de un ciclo while en un script de Shell
- Ciclo while infinito en script de shell
- Conclusión
Sintaxis de bucle while en scripts de shell
El bucle while funciona en función de la condición que se le proporciona. Puede ser tan simple como esperar a que una variable sea igual a un número específico, o tan complejo como esperar a que la salida de otro comando coincida con la salida que especificamos. Las posibilidades son infinitas aquí. Si puede evaluar algo como VERDADERO o FALSO, puede usarlo como una condición para el ciclo while.
while [condition - should evaluate to TRUE or FALSE] do command command done
Así es como se ve un ciclo while típico.
Operadores booleanos cuando se trabaja con scripts de shell
Además de los operadores booleanos que ha visto en otros lenguajes de programación, incluidos==, <, >, <=, >=,etc., estos son operadores específicos de scripts de shell. La principal diferencia de uso es que estos operadoressolo funciona cuando los valores numéricosestán provistos. Con valor de cadena, la operación simplemente fallará.
Operador | Descripción | Ejemplo |
---|---|---|
-nacido | Comprueba si ambos operandos no son iguales | [ 1 -ne 2 ] es verdad |
?equivalente | Comprueba si ambos operandos son iguales | [ 1 -eq 2 ] Es falso |
?es | Comprobar si el operando izquierdo es menor que el operando derecho | [1-lt 2 ] es verdad |
?gt | Comprobar si el operando izquierdo es mayor que el operando derecho | [1-gt 2 ] Es falso |
?los | Comprueba si el operando de la izquierda es menor o igual que el de la derecha. | [1-le 2 ] es verdad |
?pero | Comprueba si el operando de la izquierda es mayor o igual que el de la derecha. | [1-ge 2 ] Es falso |
Creación de un ciclo while en un script de Shell
Un ciclo while no tiene un límite de repetición por defecto. Tenemos que proporcionarle explícitamente una condición que, en algún momento durante la ejecución del código, se vuelva falsa. De lo contrario, tendrá un ciclo que no termina a menos que se envíe una señal de interrupción.
i=0 while [ $i -le 10 ] do echo True ((i++)) done echo False
Guarde el script anterior con cualquier nombre con el.shextensión. Para ejecutar el archivo, puede ejecutarlo con el bash comando comointento
Entendamos el guión línea por línea.
- yo=0? Aquí establecemos la variable $i a 0. Obtenga más información sobrevariablesen nuestro tutorial anterior
- tiempo [ $i -le 10 ]? Ejecute el ciclo while solo hasta que la variable $i sea menor o igual a 10. Por lo tanto, este ciclo se ejecutará 11 veces, incluida la ejecución CERO-ésima.
- hacer? Marca el comienzo del ciclo while en scripts de shell
- eco verdadero? Un simple comando que imprimirá la palabra ?Verdadero? en nuestro terminal
- ((yo++))? Incrementos de variables estilo Cañadir 1a la variable i con cada bucle. Hay varias otras formas de realizar un incremento que incluyen $i=((i+1)), ((i=i+1)), etc. Siéntase libre de usar cualquiera de las dos.
- hecho? Marca el final del ciclo while
- eco falso? Esto nuevamente simplemente imprime la palabra Falso en la pantalla para indicar que la condición ahora se ha vuelto falsa.
Recibirá un resultado similar al de la siguiente captura de pantalla.
Ciclo while infinito en script de shell
Ahora que descubrimos cómo agregar una condición para terminar el ciclo while, veamos cómo podemos trabajar en un ciclo while infinito. Lo único que tendremos que hacer es omitir la parte de la condición.
i=0 while : do echo Script ran $i times ((i++)) done echo False
Guarde este script en otro archivo con el.shextensión. Puede seguir los mismos pasos anteriores para ejecutar el script de shell. Tan pronto como se ejecute el script, en menos de 1 segundo, debería obtener el resultado cientos de miles de veces.
Para detener el script, presione Ctrl + C.
Tendrás que desplazarte hacia arriba para ver dónde empezaste porque los bucles se ejecutan muy rápido.
Conclusión
Este es un ciclo lo suficientemente simple como para no necesitar una cobertura detallada en este momento. A medida que avanzamos con los temas, continuaremos usando el ciclo while de manera consistente. para operaciones más detalladas, incluida la lectura de archivos, la evaluación de más condiciones, etc. Cuando siga los tutoriales de shell scripting 101, aprenderá un tema con cada tutorial. Asegúrese de practicar lo suficiente para asegurarse de estar bien versado y tener una buena práctica antes de pasar al siguiente tema. En este tutorial, hemos cubierto el ciclo while en el script de shell y el uso.
Referencias:
https://www.gnu.org/software/gawk/manual/html_node/While-Statement.html