Cómo recorrer un rango con decimales en Shell Script

Para recorrer un rango con decimales nos podemos ayudar del comando seq. Pero hemos de tener en cuenta una curiosa característica de seq, y es que si le indicamos un decimal, lo haremos con punto, sin embargo, nos devuelve los decimales con coma:

$ seq 0.1 5
0,1
1,1
2,1
3,1
4,1

Pero no le podemos indicar los decimales con coma:

$ seq 0,1 5
seq: argumento de coma flotante inválido: «0,1»
Pruebe 'seq --help' para más información.

También podemos indicar que el paso no sea entero, sino un número decimal:

$ seq 0.1 0.2 2
0,1
0,3
0,5
0,7
0,9
1,1
1,3
1,5
1,7
1,9

También nos devuelve los decimales separados por coma. Pero lo podemos solucionar sustituyendo caracteres con el comando tr:

$ seq 0.1 0.2 2 | tr , .
0.1
0.3
0.5
0.7
0.9
1.1
1.3
1.5
1.7
1.9

Y ahora que ya sabemos cómo crear una secuencia con decimales en la línea de comandos, vamos a programar  un script con un for que recorra esa secuencia:

#!/bin/bash

for i in $(seq 0.1 0.2 2 | tr , .)
do
    echo El valor de \$i es $i
done

Que nos devuelve:

El valor de $i es 0.1
El valor de $i es 0.3
El valor de $i es 0.5
El valor de $i es 0.7
El valor de $i es 0.9
El valor de $i es 1.1
El valor de $i es 1.3
El valor de $i es 1.5
El valor de $i es 1.7
El valor de $i es 1.9

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.