Pages : 1
#1 Le 28/01/2012, à 11:28
- lann
Test de nombre à virgule en bash
Bonjour
J'utilise quelquefois bash pour faire des tâches répétitives.
Donc je ne connais pas bien ce langage de programmation.
Dans un script j'aurais besoin d'utiliser des nombres à virgule.
J'ai compris que pour les calculs il fallait utiliser bc.
Mais pour un test sur deux nombres à virgule (dans une boucle While), je n'y arrive pas.
Comment le mettre en oeuvre.
Un exemple simple me conviendrait
Merci
Hors ligne
#2 Le 28/01/2012, à 12:05
- pingouinux
Re : Test de nombre à virgule en bash
Bonjour,
Pour faire des opérations sur les nombres flottants, il faut utiliser :
bc -l
Le mieux serait que tu montres un exemple de ce que tu veux faire et qui ne marche pas.
Hors ligne
#3 Le 28/01/2012, à 12:32
- lann
Re : Test de nombre à virgule en bash
Donc mes variables :
lat_sup=48.79872
lat_inf=47.65336
pas_025=0.000134989
l'opération d'ajout
lat_inf_cours=$(echo "$lat_sup_cours-$pas_025" | bc -l)
qui ne me met pas d'erreurs
et le test dans la boucle while, qui ne fonctionne pas:
while $lat_sup_cours > $lat_inf
do
......
done
Merci
Hors ligne
#4 Le 28/01/2012, à 12:40
- pingouinux
Re : Test de nombre à virgule en bash
Peut-être pas le plus simple, mais je pense que ceci devrait convenir :
while [ $(bc -l <<<$(echo "$lat_sup_cours > $lat_inf")) = 1 ]
do
Corrigé suite à la remarque de Bousky #7 :
while [ $(bc -l <<<"$lat_sup_cours > $lat_inf") = 1 ]
do
Dernière modification par pingouinux (Le 28/01/2012, à 15:25)
Hors ligne
#5 Le 28/01/2012, à 12:52
- lann
Re : Test de nombre à virgule en bash
Un grand merci pour cette réponse rapide qui à l'air de très bien fonctionner
Un débutant en bash qui ne comprends pas les subtilités
C++ c'est plus facile
Hors ligne
#6 Le 28/01/2012, à 12:56
- pingouinux
Re : Test de nombre à virgule en bash
Il serait préférable, dans la mesure du possible, d'appeler bc une seule fois et d'y effectuer la boucle complète.
Hors ligne
#7 Le 28/01/2012, à 15:03
- Bousky
Re : Test de nombre à virgule en bash
… <<<$(echo "…") …
Ça ne sert à rien (si ce n'est à compliquer le code et à consommer plus de ressources). Il suffit de mettre
… <<< "…" …
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#8 Le 28/01/2012, à 15:23
- pingouinux
Re : Test de nombre à virgule en bash
@Bousky #7 : Ok, merci du tuyau
Hors ligne