Cómo usar BASH para Loop



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

Uno de los trucos más básicos a la hora de crear scripts de bash consiste en hacer un bucle para que una determinada tarea se ejecute automáticamente varias veces. Eventualmente, el bucle alcanzará una condición de prueba predeterminada y de repente dejará de ejecutarse. Bucles como estos funcionarán perfectamente en bash en Linux y macOS, así como en el shell bash dentro de Windows 10 e incluso en los distintos shells en FreeBSD. Naturalmente, puede escribir el comando que prefiera en cualquier bucle y mantener el proceso en marcha durante el tiempo que desee. Si bien escribiremos algunos bucles extremadamente simples, puede usar estas habilidades para crear cualquier tipo de guiones que desee.



Hay muchas formas de comenzar a escribir un script, pero para esta discusión asumiremos que ha abierto un símbolo del sistema, ya sea buscando la terminal en el tablero, haciendo clic en ella en los menús de KDE, MATE, LX o Whisker o manteniendo presionadas Ctrl, Alt y T al mismo tiempo. Si bien discutiremos vi / vim y nano como editores, la cuestión de qué editor usar es bastante personal y podría trabajar con lo que se sienta cómodo.



Método 1: El bucle hasta

Quizás el ciclo más básico de bash es el ciclo hasta. Seguirá ejecutando comandos hasta que se cumpla la condición de prueba que estableció. Asumiremos que ha utilizado nano o vi para abrir un archivo inexistente llamado until.sh y está listo para insertar texto nuevo en él. Haremos algo que cuente hasta 20 en su terminal para que esto sea fácil al principio.



Comience escribiendo lo siguiente:

#! / bin / bash

n = 0



hasta el [$ n -gt 20]

hacer

echo $n

((n ++))

hecho

Si está usando nano, guárdelo manteniendo presionada la tecla Ctrl y luego presionando O y finalmente X para salir. Los usuarios de vi querrán presionar escape y luego escribir: wq para guardar y salir.

Siguiente tipo chmod + x hasta bucle en el indicador para hacerlo ejecutable y luego escriba ./untilLoop para ejecutarlo. Una vez que se ejecuta, el ciclo seguirá imprimiendo nuevos números en su terminal hasta que la variable n llegue a 20.

Por cierto, la primera línea le dice a su entorno qué shell cargar cuando se trabaja con estos scripts. Algunos programadores aconsejan usar solo #! / Bin / sh para asegurarse de que su script se adhiera a ciertos estándares POSIX, pero estos scripts simples no deberían tener ningún problema al ejecutarse en la gran mayoría de los sistemas modernos.

Método 2: el bucle for

Un bucle for echa un vistazo a cada elemento en una lista dada y luego ejecuta un conjunto dado de comandos en esa lista. Haremos uno que imprima algunos nombres de sistemas operativos, pero tenga en cuenta nuevamente que podría hacer cualquier cosa con esto si lo desea.

Escriba ya sea nano forLoop o nosotros forLoop en el símbolo del sistema y comience a ingresar este siguiente script. Los usuarios de vi deberán ingresar al modo de inserción antes de hacerlo.

#! / bin / bash

unices = ’GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix’

para unix en $ unices

hacer

echo $ unix

hecho

Guarde el archivo nuevamente usando Ctrl + O y luego Ctrl + X método en nano o Esc luego: método wq en vi antes de emitir el comando chmod + x forLoop para hacerlo ejecutable. Una vez que lo haya hecho, ejecútelo escribiendo ./en bucle en el aviso. El bucle for obliga al comando echo a trabajar en cada uno de los elementos de la variable de unices por turno. Una vez más, podría reemplazar esa lista con cualquier argumento y reemplazar echo con cualquier comando para automatizar procesos largos.

Método 3: bucle while

Comience a editar un tercer archivo llamado whileLoop usando nano, vi o cualquier otro editor que desee usar. Si prefiere usar un editor de texto gráfico, entonces podría hacerlo también con cualquiera de estos proyectos, siempre que se asegure de colocar el archivo en el mismo directorio en el que está trabajando desde dentro del símbolo del sistema. .

Dentro de este archivo, querrá agregar las líneas:

#! / bin / bash

n = 0

mientras que [$ n -le 20]

hacer

echo $n

((n ++))

hecho

Guarde el archivo de la misma manera que guardó los demás y luego salga de su editor de texto. Una vez que haya salido, emita el comando chmod + x whileLoop para permitirle ejecutarlo y luego ejecutar ./ whileLoop para ejecutarlo. Verá la misma salida que salió de la secuencia de comandos untilLoop del primer método, ya que cuenta de 0 a 20 en más que probablemente una fracción de segundo.

Ésta es una excelente demostración del hecho de que hay más de una forma de hacer las cosas siempre que se trabaja con bucles de esta manera. Si bien técnicamente no hay una forma incorrecta de hacerlo, probablemente se encontrará con autores de guiones que afirman que debe escribir sus guiones más cerca de la forma en que el lenguaje de programación C hace las cosas o, alternativamente, otros pueden sugerir que no debe hacer esto. Honestamente, probablemente hay muchas formas correctas de resolver un problema.

Siéntase libre de eliminar sus guiones una vez que haya terminado de practicar con ellos.

3 minutos de lectura