IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[CSH] condition IF


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut [CSH] condition IF
    Bonjour,

    je souhaiterais simplement mettre en place une condition telle que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     59    set MinMaxX=`minmax tracex$ii -C`
     60    echo "MinMaxx" $MinMaxX[4]
     61    set MinMaxZ=`minmax tracez$ii -C`
     62    echo "MinMaxZ" $MinMaxZ[4]
     63    
     64    if ( $MinMaxX[4] >= $MinMaxZ[4] ) then
     65    set z=`minmax tracexii -C`
     66    else 
     67    set z=`minmax tracezii -C`
     68    endif
    Mais la condition marche pas et CSH me sort

    MinMaxx 3.89e-15
    MinMaxZ 9.06e-17
    if: Badly formed number.
    Je vois pas pourquoi...

    Merci d'avance.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 264
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    oui, mais en tcsh, c'est bien endif.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    oui le problème semble ne se situer qu'à cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    64    if ( $MinMaxX[4] >= $MinMaxZ[4] ) then
    mais la syntaxe semble pourtant bonne pour CSH..

    J'ai 2 signaux trace (2 composantes X et Z), que j'aimerais tracer sur le même plot.
    L'idée est sortir le max de chacun des fichiers traceX$ii et traceZ$ii ($ii parce que le tout est bouclé sur bcp de fichiers)
    Ensuite de trouver le plus grand max entre les deux et de le garder pour définir les bornes en ordonnées.

    Alors si vous avez aussi d'autres idées pour le faire je suis preneur.

    Merci

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par Newenda Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $MinMaxX[4] >= $MinMaxZ[4] ) then
    Mais la condition marche pas et CSH me sort

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MinMaxx 3.89e-15
    MinMaxZ 9.06e-17
    if: Badly formed number.
    Je vois pas pourquoi...
    Parce que tes nombres sont en notation scientifique.

    Après quelques tests, il me semble que les tests arithmétiques de "csh" supportent uniquement les nombres entiers (comme sh et ksh) et non les nombres réels, ni à virgule fixe, ni en notation scientifique.

    Je ne sais pas s'il existe une syntaxe permettant de tester les flottants en notation scientifique avec "csh" (j'en doute).

    Je crois que bc ne le permet pas non plus.

    Peut-être les spécialistes de "awk" ou "perl" pourront proposer une solution.

    Si tu peux modifier le format de sortie de "minmax", ça simplifierait le problème.
    Sinon tu peux convertir les nombres avec des trucs comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set mx = `echo "$MinMaxX[4]" | awk -F"e" 'BEGIN{OFMT="%10.20f"} {print $1 * (10 ^ $2)}'`
    en gérant bien le séparateur...

    PS: En bash, le test ... -le ... (abrégeable en [ ... -le ... ]) ne supporte que les entiers, alors que [[ ... <= ... ]] supporte bien les réels mais en notation à virgule fixe uniquement, pas en notation scientifique.

    EDIT: Pour la postérité, je ne laisse pas une telle erreur
    En bash, la comparaison est lexicale (merci N_BaH), si bien que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [[ 10 < 2 ]] && echo oui
    oui

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    attention, en bash, [[ ... <= ... ]] est une comparaison lexicale : cela compare des chaînes de texte, pas des nombres.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Condition If multiple
    Par M1000 dans le forum ASP
    Réponses: 2
    Dernier message: 01/03/2004, 13h46
  2. [MYSQL] conditions et requetes
    Par sebos63 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 16h41
  3. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04
  4. Condition et contenu TImage
    Par Detlev_linux dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2003, 01h00
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo