LINUX

Cómo escribir un bucle en Bash con ejemplos

bash para bucle

¿Cómo automatizar con bash for loop bajo el sistema operativo Linux/UNIX? ¿Cómo uso break, continue y el parámetro para la expresión de control de bucle? ¿Cómo actuar en archivos usando for loop?

El bucle for es una herramienta muy útil para resolver muchos problemas del mundo de la programación, y por ello vamos a resolver algunos problemas del mundo real. En Linux usamos bucles a través de Bash, Python para hacer automatizaciones como secuencias de comandos de contraseña, secuencias de comandos de recuento. En este artículo, explicaremos todos los tipos de bucles para Bash.

1) para bucle

Podemos usar el bucle For para leer todos o parte de los elementos de una lista y mostrar estos elementos en la pantalla.

Sintaxis del bucle For

para variable en elemento1 elemento2 elemento3 O
hacer
pedidos
Terminado

Vamos a hacer un script para enviar un mensaje de saludo para cada día de la semana, así que usaremos for bucle para leer todos los días 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

Rodar welcome.sh archivo con bash dominio.

$ 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 y asignará ese elemento a la variable respectivamente $daydespués de eso, ejecute el código entre do y done luego regrese al principio, asigne el siguiente elemento en la lista y repita.

Podemos usar un rango con un bucle for para establecer 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 el número par del 1 al 20, agregaremos un paso para el 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

Otra forma de usar el paso de bucle for.

  #!/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 se trabaja en 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 de bucle

podemos ejecutar el bucle For en una línea, los renombraremos a todos *.txt archivos para eliminar la extensión del archivo.

$ for filename in *.txt; do mv "$filename" "${filename%.txt}"; done

O en el guion

  !#/bin/bash
  for filename in *.txt
  do
    mv "$filename" "${filename%.txt}"
  done

3) Lectura de argumentos desde la línea de comando

Cuando ejecutamos el script de bucle For, podemos pasar argumentos.

  for myvalue in $*
  do
    echo "Argument: $myvalue"
  done
$ bash linoxide.sh I Love LinOxide
output
Argument: I
Argument: Love
Argument: LinOxide

4) Lectura de números pares e impares

Escribiremos un script para leer 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) mientras bucle

Si bien el ciclo depende de que la condición sea verdadera, si la condición es falsa, el intérprete sale del ciclo.

La sintaxis del ciclo while

tiempo [ <some condition> ]hacer

Terminado

Contaremos de 10 a 20 e imprimiremos los resultados. Así que pondremos como condición que el contador sea menor o igual a 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 el bucle

Hasta un bucle como un bucle while, pero el intérprete ejecuta los comandos en él hasta que la condición se vuelve verdadera.

Sintaxis hasta el bucle

Hasta que [ <some condition> ]hacer

Terminado

Contaremos de 10 a 20 e imprimiremos los resultados. Así que pondremos como condición 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) Lazos de control

Nosotros podemos usar Break o Continue para controlar los bucles.

romper declaración

por Break declaración, podemos salir del ciclo y no hay necesidad de completar el ciclo cuando usamos if instrucció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 la declaración

Para Continue declaración, podemos hacer un bucle y no hay necesidad de terminar el bucle cuando lo usamos if instrucció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) Seleccione el bucle

Seleccione bucle como while y hasta bucle, pero le permite crear un sistema de menú simple.

Sintaxis del ciclo de selección

seleccionar var en hacer

Terminado

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

  1. Bash For loop utilizado en sincronización, creación de contraseña, copia de seguridad, etc.
  2. Do while es lo mismo que while, pero el intérprete ejecuta el primer código sin ninguna condición
  3. La instrucción Break es muy importante para salir del bucle.
  4. La declaración Select es útil cuando tenemos muchas opciones

Lea también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar