Cómo escribir bucle en Bash con ejemplos

¿Cómo hacer la automatización con bash for loop en el sistema operativo Linux / UNIX? ¿Cómo utilizo romper, continuar y el parámetro para la expresión de control de bucle? ¿Cómo actuar en archivos que usan for loop?
For loop es una herramienta muy útil para resolver muchos problemas en el mundo de la programación y por lo tanto resolveremos algunos problemas en el mundo real. En Linux usamos bucles a través de Bash, Python para hacer automatización como script de contraseña, script de conteo. En este artículo, explicaremos todos los tipos de bucles de Bash.
1) para bucle
Podemos usar For loop para leer todos los elementos de una lista o parte de ellos y mostrar estos elementos en la pantalla.
Sintaxis del bucle For
para variable en element1 element2 element3 O
hacer
comandos
hecho
Haremos un guión para enviar mensaje de saludo para cada día de la semana, así que usaremos for
bucle para leer cada día e imprimirlo. Crea un archivo welcome.sh
con nano
editor y pegue el código a continuación.
#!/bin/bash for day in Sunday Saturday Monday Tuesday Wednesday Thursday Friday do echo "Welcome $day day" done
Ejecutar el welcome.sh
archivar con bash
mando.
$ bash welcome.sh
output Welcome Sunday day Welcome Saturday day Welcome Monday day Welcome Tuesday day Welcome Wednesday day Welcome Thursday day Welcome Friday day
El bucle for tomará cada elemento de la lista respectivamente y asignará este elemento a la variable $day
, luego ejecute el código entre do
y done
luego vuelva al principio, asigne el siguiente elemento de la lista y repita.
Podemos usar un rango con for loop para poner el punto de inicio y el punto final.
#!/bin/bash for i in {10..20} do echo "Welcome $i times" done
$ bash range.sh
output Welcome 10 times Welcome 11 times Welcome 12 times Welcome 13 times Welcome 14 times Welcome 15 times Welcome 16 times Welcome 17 times Welcome 18 times Welcome 19 times Welcome 20 times
Si queremos contar números pares del 1 al 20, agregaremos paso por rango.
#!/bin/bash for i in {10..20..2} do echo "Welcome $i times" done
$ bash even.sh
output Welcome 10 times Welcome 12 times Welcome 14 times Welcome 16 times Welcome 18 times Welcome 20 times
Otro tipo de paso de uso con for loop.
#!/bin/bash for ((i=1;i<=25;i+=5)) do echo $i done
$ bash step5.sh
output 1 6 11 16 21
Y para paso negativo podemos usar el siguiente tipo.
#!/bin/bash for ((i=25;i>=1;i-=5)) do echo $i done
$ bash step-5.sh
output 25 20 15 10 5
Ejemplos en el bucle For
1) Actuar sobre archivos usando for loop
Bash For loop es la mejor manera cuando estamos trabajando con archivos.
#!/bin/bash for file in ~/*.txt do echo $file done
$ bash find_txt.sh
output /root/cat.txt /root/echo.txt /root/file.txt /root/f.txt /root/nano.txt /root/printf.txt
2) Una línea para bucle
podemos ejecutar el bucle For en una línea, cambiaremos el nombre de todos *.txt
archivos para eliminar la extensión del archivo.
$ for filename in *.txt; do mv "$filename" "${filename%.txt}"; done
O en guion
!#/bin/bash for filename in *.txt do mv "$filename" "${filename%.txt}" done
3) Leer argumentos de la línea de comandos
Cuando estamos ejecutando el script For loop, podemos ingresar argumentos.
for myvalue in $* do echo "Argument: $myvalue" done
$ bash linoxide.sh I Love LinOxide
output Argument: I Argument: Love Argument: LinOxide
4) Leer números pares e impares
Escribiremos un script para leer los números pares e impares.
for (( n=10; n<=15; n++ )) do if (( $n%2==0 )) then echo "$n is even" else echo "$n is odd" fi done
$ bash even_odd.sh
output 10 is even 11 is odd 12 is even 13 is odd 14 is even 15 is odd
2) bucle while
Mientras que el bucle depende de que la condición sea verdadera, si la condición es falsa, el intérprete saldrá del bucle.
Sintaxis del bucle while
mientras [ <some condition> ]hacer
hecho
Contaremos de 10 a 20 e imprimiremos los resultados. Por tanto, pondremos la condición de que el contador sea menor o igual que 20.
#!/bin/bash # Basic while loop counter=10 while [ $counter -le 20 ] do echo Number : $counter ((counter++)) done
$ bash while.sh
output Number : 10 Number : 11 Number : 12 Number : 13 Number : 14 Number : 15 Number : 16 Number : 17 Number : 18 Number : 19 Number : 20
3) Hasta bucle
Hasta bucle como bucle while pero el intérprete ejecuta los comandos dentro de él hasta que la condición se vuelve verdadera.
Sintaxis del bucle hasta
hasta [ <some condition> ]hacer
hecho
Contaremos de 10 a 20 e imprimiremos los resultados. Así que pondremos la condición de que el contador sea mayor o igual a 20.
#!/bin/bash # Basic Until loop counter=10 until [ $counter -gt 20 ] do echo Number : $counter ((counter++)) done
$ bash until.sh
output Number : 10 Number : 11 Number : 12 Number : 13 Number : 14 Number : 15 Number : 16 Number : 17 Number : 18 Number : 19 Number : 20
4) Control de bucles
Nosotros podemos usar Break
o Continue
para controlar los bucles.
Declaración de ruptura
por Break
declaración, podemos salir del ciclo y no es necesario completar el ciclo cuando usamos if
declaración dentro del bucle.
#!/bin/bash # Basic loop use break counter=10 until [ $counter -gt 20 ] do echo Number : $counter if [ $counter -eq 15 ] then echo Done break fi ((counter++)) done
$ bash break.sh
output Number : 10 Number : 11 Number : 12 Number : 13 Number : 14 Number : 15 Done
Continuar declaración
Para Continue
declaración, podemos seguir el ciclo y no es necesario terminar el ciclo cuando estamos usando if
declaración dentro del bucle.
#!/bin/sh NUMS="1 2 3 4 5 6 7" for NUM in $NUMS do Q=`expr $NUM % 2` if [ $Q -eq 0 ] then echo "A number is an even number!!" continue fi echo "Found odd number" done
$ bash continue.sh
output Found odd number A number is an even number!! Found odd number A number is an even number!! Found odd number A number is an even number!! Found odd number
5) Seleccionar bucle
Seleccione bucle como while y hasta bucle pero le permite crear un sistema de menú simple.
Sintaxis del bucle de selección
seleccione var en hacer
hecho
Haremos tres opciones y usaremos select
bucle para elegir entre ellos.
#!/bin/bash # select script PS3='Please enter your choice: ' options=("Option 1" "Option 2" "Option 3" "Quit") select opt in "${options[@]}" do case $opt in "Option 1") echo "you choose choice 1" ;; "Option 2") echo "you choose choice 2" ;; "Option 3") echo "you choose choice $REPLY which is $opt" ;; "Quit") break ;; *) echo "invalid option $REPLY";; esac done
$ bash select.sh
output 1) Option 1 2) Option 2 3) Option 3 4) Quit Please enter your choice: 1 you chose choice 1 Please enter your choice: 5 invalid option 5 Please enter your choice: 4
Conclusión
- Bash For bucle utilizado en sincronización, creación de contraseña, copia de seguridad, etc.
- Do while es lo mismo que while pero el intérprete ejecuta el primer código sin ninguna condición
- La declaración de ruptura es muy importante para salir del bucle.
- La declaración de selección es útil cuando tenemos muchas opciones
Leer también: