Comparaison de 2 réels en csh
Résolu
bdssssss
Messages postés
9
Statut
Membre
-
bdssssss Messages postés 9 Statut Membre -
bdssssss Messages postés 9 Statut Membre -
Bonjour,
Je travaille en csh. J'ai une condition en si qui cherche à comparer 2 variables, définies en début de script :
set AAA= 'echo "" | awk '{res = b + (a - b) / 2 ; printf("%0.2f",res)}' a=$var1 b=$var2 '
set BBB = 'echo "" | awk '{res = a + b ; printf("%0.2f",res)}' a=$var3 b=$var4'
if ($AAA <= $BBB) then
print "OK"
else
print "PAS OK"
endif
Quand j'exécute mon script, il plante et je peux lire le message d'erreur suivant :
if: Badly formed number.
En revanche, quand je fais afficher les variables AAA et BBB à l'écran (echo $AAA $BBB), les réels s'affichent correctement.
Quelqu'un aurait-il une idée pour solutionner mon problème?
Merci beaucoup par avance...
Je travaille en csh. J'ai une condition en si qui cherche à comparer 2 variables, définies en début de script :
set AAA= 'echo "" | awk '{res = b + (a - b) / 2 ; printf("%0.2f",res)}' a=$var1 b=$var2 '
set BBB = 'echo "" | awk '{res = a + b ; printf("%0.2f",res)}' a=$var3 b=$var4'
if ($AAA <= $BBB) then
print "OK"
else
print "PAS OK"
endif
Quand j'exécute mon script, il plante et je peux lire le message d'erreur suivant :
if: Badly formed number.
En revanche, quand je fais afficher les variables AAA et BBB à l'écran (echo $AAA $BBB), les réels s'affichent correctement.
Quelqu'un aurait-il une idée pour solutionner mon problème?
Merci beaucoup par avance...
3 réponses
-
salut,
après deux/trois recherches, il semble que csh ne gère pas non plus les rééls :(
solution:
piper l'équation vers bc
si le résultat est 1, c'est ok
si le résultat est 0, c'est pas bon
:) -
hello
et tout faire dans awk:echo $var1 $var2 $var3 $var4 | awk '{if(($2+($1-$2)/2) <= ($3+$4)) print "OK" ; else print "PAS OK"}'ou si il faut garder AAA et BBBAAA='echo $var1 $var2 | awk '{ printf("%0.2f", $2+($1-$2)/2)}'' BBB='echo $var3 $var4 | awk '{ printf("%0.2f", $1+$2)}'' echo $AAA $BBB | awk '{if($1 <= $2)print "OK" ; else print "PAS OK"}' -
Salut!
Merci pour vos réponses.
Finalement, hier soir, j'ai utilisé bc, et ça marche plutôt bien :
set AAA= 'echo "" | awk '{res = b + (a - b) / 2 ; printf("%0.2f",res)}' a=$var1 b=$var2 '
set BBB = 'echo "" | awk '{res = a + b ; printf("%0.2f",res)}' a=$var3 b=$var4'
set compar = 'echo "$AAA <= $BBB" | bc'
if ($compar == 1) then
print "OK"
else
print "PAS OK"
endif
C'est peut-être pas optimisé, mais ça fait ce que je veux! Merci en tout cas... Bonne journée!