logo

Secuencias de comandos Bash: bucle For

Dado que BASH es un lenguaje de línea de comandos, obtenemos una experiencia bastante rica en funciones para aprovechar las habilidades de programación para realizar tareas en la terminal. Podemos usar bucles y declaraciones condicionales en scripts BASH para realizar algunos problemas repetitivos y complicados de una manera programática simple. En este artículo nos centraremos en el en bucle en scripts BASH.

Dependiendo del caso de uso y del problema que se intenta automatizar, hay un par de formas de utilizar los bucles.



  • Bucle For simple
  • Bucle for basado en rango
  • iteración de matriz para bucles
  • Estilo C para bucles
  • bucle infinito

Bucle For simple

Para ejecutar un bucle for podemos escribir la siguiente sintaxis:

#!/bin/bash  for n in a b c; do  echo $n done>
  • En la primera iteración,n>toma el valor a y el script imprime a.
  • En la segunda iteración,n>toma el valor by el script imprime b.
  • En la tercera iteración,n>toma el valor c y el script imprime c.

501

El comando anterior iterará sobre los elementos especificados después del en palabra clave una por una. Los elementos pueden ser números, cadenas u otras formas de datos.



Bucle for basado en rango

Podemos utilizar bucles for basados ​​en rangos. En este tipo de bucle, podemos especificar el número a iniciar, detener e incrementar en cada iteración (opcional) de la declaración. Hay dos formas de hacer esto, es decir, mencionando el valor de incremento/decrementador e incrementando en uno de forma predeterminada. La sintaxis se ve así:

#!/bin/bash  for n in {1..5};  do  echo $n done>

500

cómo encontrar números bloqueados en Android

En el código anterior, usamos {} para especificar un rango de números. Dentro de las llaves, especificamos el punto inicial seguido de dos puntos y un punto final. Por defecto, aumenta en uno. Por lo tanto imprimimos 5 números del 1 al 5 ambos inclusive.



#!/bin/bash  for n in {1..5..2};  do  echo $n done>

502

Aquí podemos ver que el bucle se incrementó en 2 unidades como se menciona entre llaves. Por lo tanto, esto hace que trabajar con números sea muy fácil y conveniente. Esto también se puede utilizar con caracteres alfabéticos.

NOTA: No podemos usar variables dentro de las llaves, por lo que tendremos que codificar los valores. Para usar las variables, veremos los bucles for tradicionales estilo C en las siguientes secciones.

iteración de matriz para bucles

Podemos iterar sobre matrices cómodamente en bash usando bucles for con una sintaxis específica. Podemos usar las variables especiales en BASH, es decir, @ para acceder a todos los elementos de la matriz. Veamos el código:

#!/bin/bash  s=('football' 'cricket' 'hockey')  for n in ${s[@]};  do  echo $n done>

503

Podemos iterar sobre los elementos de la matriz usando el operador @ que obtiene todos los elementos de la matriz. Por lo tanto, usando el bucle for, los iteramos uno por uno. Usamos la variable ${variable_name[@]} en la cual, las llaves aquí expanden el valor de la variable s aquí, que es una matriz de cadenas. Usando el operador [@] accedemos a todos los elementos y así los iteramos en el bucle for. Aquí el norte es el iterador, por lo tanto, podemos imprimir el valor o realizar el procesamiento requerido en él.

Estilo C para bucles

Como se dijo anteriormente, necesitamos usar las variables dentro de los bucles for para iterar sobre una variedad de elementos. Y por lo tanto, los bucles for estilo C juegan un papel muy importante. Veamos cómo los usamos.

#!/bin/bash  n=7 for (( i=1 ; i<=$n ; i++ ));  do  echo $i done>

504

Como podemos ver, podemos usar dinámicamente el valor del rango de condiciones finales. Recuerde que los espacios entre llaves dobles pueden ser intencionales y son parte de la sintaxis. Los bucles for de estilo C son bucles que tienen 3 partes, el iterador de inicialización, el incrementador/decrementador y la condición final.

En la sintaxis anterior, hemos inicializado el iterador/contador de bucle en 1, que puede ser cualquier cosa según nuestra elección. La segunda parte es la condición final, aquí hemos usado la variable norte que se inicializa antes del bucle for y por eso usamos el simple $ operador para obtener el valor de la variable. Finalmente, tenemos el incrementador/decrementador que cambia el iterador/contador a un valor que puede ser cualquier cosa pero, en el ejemplo, hemos usado el operador unario. (++) para incrementar el valor en uno que es equivalente a yo=yo+1 . Así podemos utilizar afirmaciones como i+=2, i–,++i, y así sucesivamente y así sucesivamente.

bucle infinito

No usamos esto con frecuencia, pero a veces es útil para que ciertas cosas funcionen. La sintaxis es bastante sencilla y similar a la de los bucles for estilo C.

#!/bin/bash  n=4 for (( ; ; ));  do  if [ $n -eq 9 ];then  break  fi  echo $n  ((n=n+1)) done>

El bucle comienza conn>establecido en 4. Incrementan>por 1 en cada iteración e imprime el valor den>hastan>se vuelve igual a 9. Cuandon>llega a 9, elbreak>Se ejecuta la declaración y el ciclo termina. El script se detiene después de imprimir los números del 4 al 8.

505

Como podemos ver, el bucle `for` no tiene condiciones y se repite para siempre, pero tenemos una declaración de condición para comprobar que no continúa para siempre. Usamos la declaración break dentro de la declaración if para salir del ciclo y dejar de iterar con el iterador. Hemos utilizado el incrementador para incrementar la variable en el bucle, de lo contrario el bucle es infinito. Por supuesto, necesitamos algo de lógica para salir del bucle y es por eso que necesitamos usar la declaración condicional if.