Loop no bash para criar o número decimal

3

Como gerar números

0.01, 0.02, 0.03 ... until 0.2

no bash?

eu corro este exemplo mas não funciona

#!/bin/bash
#
# Script for running several experimentations one the same JVM
#

for ((i = 0; i < 0.1; i += 0.01))
do
echo $i
done 
    
por user1149157 15.05.2012 / 18:14

3 respostas

6

Simples e fácil:

seq BEGIN STEP END

exemplo:

seq 0.0 0.1 2.0

ou (padrão +1)

for i in 'seq 1 30'; do echo student$i; done
    
por us3r 15.05.2012 / 19:09
2

O script a seguir apresenta uma saída como

0.01, 0.02, 0.03 ... until 0.2

/

#!/bin/bash
for ((i=0; i < 20; i += 1))
do
        echo "scale=2; ${i}/100" | bc
done
    
por OrangeTux 15.05.2012 / 18:40
0

Bash só pode fazer matemática com números inteiros, não flutuantes, então você tem que usar um idioma diferente, como awk ou bc, ou mudar o problema para um domínio inteiro.

com o awk:

awk 'BEGIN{ for (i=0.0; i < 0.2; i+=0.01) printf("%.2f\n", i); }'

Com bash, usando inteiros

for ((i=0; i < 20; i++)); do
    printf "%d.%02d\n" $((i/100)) $((i%100))
done
    
por geirha 15.05.2012 / 19:03