web-dev-qa-db-fra.com

Boucle en bash pour créer un nombre décimal

Comment générer un nombre

0.01, 0.02, 0.03 ... until 0.2

en bash?

je lance cet exemple mais ça ne marche pas

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

for ((i = 0; i < 0.1; i += 0.01))
do
echo $i
done 
3
user1149157

Simple et facile:

seq BEGIN STEP END

exemple:

seq 0.0 0.1 2.0

ou (par défaut +1)

for i in `seq 1 30`; do echo student$i; done
7
us3r

Le script suivant vous donne une sortie comme

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
2
OrangeTux

Bash ne peut faire des calculs qu'avec des nombres entiers, et non des flottants. Vous devez donc utiliser un langage différent, comme awk ou bc, ou déplacer le problème en domaine entier.

Avec awk:

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

Avec bash, utiliser des entiers

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