Rangos en Bash

Fumbani Banda 19 enero 2022
  1. Utilice el bucle for para obtener rango en Bash
  2. Utilice el bucle for con tres expresiones para obtener rango en Bash
  3. Utilice el bucle while para obtener rango en Bash
  4. Utilice eval para obtener rango en Bash
  5. Utilice seq para obtener rango en Bash
Rangos en Bash

Este tutorial demuestra la iteración a través de un rango de enteros en bash con el bucle for y el bucle while.

Utilice el bucle for para obtener rango en Bash

El siguiente script bash usa un bucle for con expansión de llaves para recorrer un rango de números. Los números dentro de las llaves se incrementan secuencialmente.

#!/bin/bash

printf "Print Numbers from 0 to 5\n"
for x in {0..5}
do
printf "number:$x\n"
done

Producción :

Print Numbers from 0 to 5
number:0
number:1
number:2
number:3
number:4
number:5

Utilice el bucle for con tres expresiones para obtener rango en Bash

El script utiliza un bucle for con una expresión de tres como en el lenguaje C. Aquí, expr1 es la inicialización, expr2 es la condición y expr3 es el incremento.

En nuestro caso, x se inicializa a 0, x se prueba si es menor o igual a 5 y por último, x se incrementa en 1.

#!/bin/bash

max=5
printf "Print Numbers from 0 to $max\n"
for ((x=0;x<=max;x++)); do
    printf "number: $x\n"
done

Producción :

Print Numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5

Utilice el bucle while para obtener rango en Bash

Utiliza un bucle while con un operador de comparación binario, -le, que se utiliza para la comparación de valores aritméticos.

En nuestro caso, el bucle while se ejecuta siempre que x sea menor o igual que la variable $max.

#!/bin/bash

x=0
max=5
printf "Print numbers from $x to $max\n"
while [ $x -le $max ]; do
    printf "number: $x\n"
    x=$(($x+1))
done

Producción :

Print numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5

Utilice eval para obtener rango en Bash

eval es un comando bash usado para ejecutar argumentos como comandos de shell. En el siguiente script, las llaves generan números desde 0 a$max en incrementos de 1, el bucle for itera sobre estos números y el comando printf los muestra.

#!/bin/bash

max=4

printf "Print Numbers from 0 to $max\n"
for x in `eval echo {0..$max}`
do
printf "number: $x\n"
done

Producción :

Print Numbers from 0 to 4
number: 0
number: 1
number: 2
number: 3
number: 4

Utilice seq para obtener rango en Bash

seq es un comando de bash que se utiliza para generar números desde el inicio hasta el final en pasos de incremento.

En nuestro caso, seq genera números de x a $max en incrementos de 1. El bucle for itera sobre estos números, y el comando printf se usa para mostrarlos.

x=0
max=5

printf "Print numbers from $x to $max\n"
for x in $(seq $x $max)
do
printf "number: $x\n"
done

Producción :

Print numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Artículo relacionado - Bash Loop