Secuencias de comandos de Bash – For Loop

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 vamos a centrar en el bucle for de los scripts BASH.

Hay un par de formas de usar bucles for según el caso de uso y el problema que está tratando de automatizar.

  • Bucle For simple
  • Bucle for basado en rango
  • Iteración de array para bucles
  • Estilo C para bucles
  • Infinito para bucle

Bucle For simple

Para ejecutar un bucle for podemos escribir la siguiente sintaxis:

#!/bin/usr/env bash

for n in a b c;
do
   echo $n
done

El comando anterior iterará sobre los elementos especificados después de la palabra clave in uno por uno. Los elementos pueden ser números, strings u otras formas de datos.

Bucle for basado en rango

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

#!/bin/usr/env bash

for n in {1..5}; 
do
    echo $n
done

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

#!/bin/usr/env bash

for n in {1..5..2}; 
do
    echo $n
done

Aquí podemos ver que el bucle se incrementó en 2 unidades como se menciona en las 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, vemos los tradicionales bucles for de estilo C en las próximas secciones.

Iteración de array para bucles

Podemos iterar sobre arreglos convenientemente 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 array. Veamos el código:

#!/bin/usr/env bash

s=("football" "cricket" "hockey") 
for n in ${s[@]}; 
do
    echo $n
done

Podemos iterar sobre los elementos de la array usando el operador @ que obtiene todos los elementos de la array. Por lo tanto, usando el ciclo for iteramos sobre ellos 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 array de strings. Usando el operador [@] accedemos a todos los elementos y así iteramos sobre ellos en el bucle for a. Aquí, la » n » es el iterador, por lo tanto, podemos imprimir el valor o hacer 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 un rango de elementos. Y por lo tanto, los bucles for de estilo C juegan un papel muy importante. Veamos cómo los usamos.

#!/bin/usr/env bash

n=7
for (( i=1 ; i<=$n ; i++ )); 
do
    echo $i
done

Como podemos ver, podemos usar dinámicamente el valor del rango de condiciones finales. Recuerde que los espacios entre las llaves dobles pueden ser intencionales y son parte de la sintaxis. Los bucles for de estilo C son los 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 su elección. La segunda parte es la condición final, aquí hemos usado la variable «n» que se inicializa antes del ciclo for y, por lo tanto, usamos el operador $ simple para obtener el valor de la variable. Finalmente, tenemos el incrementador/decrementador que cambia el iterador/contador a un valor que puede ser cualquiera pero en el ejemplo, hemos usado el operador unario (++) para incrementar el valor en uno que es equivalente a “i=i +1” . Por lo tanto, podemos usar declaraciones como i+=2, i–,++i, y así sucesivamente.

Infinito para bucle

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

#!/bin/usr/env bash

n=4
for (( ; ; )); 
do
    if [ $n -eq 9 ];then
        break
    fi
    echo $n
    ((n=n+1))
done

Como podemos ver, el ciclo for no tiene condiciones y este se repite para siempre, pero tenemos una declaración de condición para verificar que no continúe para siempre. Usamos la sentencia break dentro de la sentencia if para salir del bucle y dejar de iterar con el iterador. Hemos usado 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. 

Publicación traducida automáticamente

Artículo escrito por meetgor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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