Comparaison de 2 réels en csh

Résolu
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...

3 réponses

  1. 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
    :)
    0
    1. Contributeur
      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 BBB
      AAA='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"}' 
      
      0
      1. 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!
        0