Comparaison de 2 réels en csh

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

3 réponses

  1. Utilisateur anonyme
     
    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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  3. bdssssss Messages postés 9 Statut Membre
     
    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