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 :

Problème de if / fi


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut Problème de if / fi
    Bonjour,

    j'ai le code suivant mais j'ai une erreur : "problème de fi"...
    Je ne me souviens pas exactement de l'intitulé mais ça concernant le "fi" juste avant le "else"...

    Je ne m'y connais pas trop mais je ne vois pas où pourrait se trouver l'erreur :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #!/bin/ksh 
    # script TEST.sh
     
    numsoc=1 
    numrun=2
    # Is the file existing and not empty ? 
    if [-f $fichier/$MSV01.$numsoc.$numrun.xml] then 
       nbrmot= $(wc -l $fichier/MSV01.$numsoc.$numrun.xml)
     
     if [$nbrmot > 1] then 
       cp $fichier/MSV01.$numsoc.$numrun.xml $tmp
       if [$? != 0]  then 
         echo "copying problem of the file" 
       fi 
     fi 
    else 
       echo "$fichier/$MSV01.$numsoc.$numrun.xml not present" 
    fi
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Par défaut
    A priori, je dirais ça:

    Please note the spacing inside the [ and ] brackets! Without the spaces, it won't work!

    http://www.linuxconfig.org/Bash_scri...-fi-statements

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if [ expr ]; then
    ...
    de plus, les évaluations arithmétiques s'effectuent dans...
    des évaluations arithmétiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (( expr )); then
    ...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    merci à vous

    mais qu'entendez-vous par évaluation arithmétique ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    des comparaisons de nombres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var=12
    var1=2
    if (( var > var1 ))
    then echo "\$var est supérieur à \$var1"
    elif (( var < var1 ))
    then echo "\$var est inférieur à \$var1"
    else
    # c'est à dire (( var == var1 ))
         echo "\$var est égal à \$var1"
    fi
    comme tu le vois, le signe dollar n'est pas nécessaire entre les double-parenthèses (( ))(sauf pour les éléments d'un tableau, qui doivent conserver leur forme: ${array[n]})

    PS: n'oublie de mettre des espaces entre les crochets droits [ ] et l'expression testée.
    ces espaces indispensables entre crochets droits ne le sont pas entre double parenthèses.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    Merci, ça marche maintenant mais j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./TEST.sh[8]: 60:  not found
    NBRMOT:
    ./TEST.sh[10]:   > 1 : syntax error
    Problème pour considérer le nombre de wc (=60) dans le fichier visé ?


    sauf pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/bin/ksh
    # script TEST.sh
     
    numsoc=1
    numrun=28781
    # Is the file existing and not empty ?
    if [ -f $fichier/"MSV01".$numsoc.$numrun.xml ];then
       nbrmot= $(wc -l $fichier/"MSV01".$numsoc.$numrun.xml)
       echo "NBRMOT: $nbrmot"
     if (( $nbrmot > 1 ));then
       cp $fichier/MSV01.$numsoc.$numrun.xml $tmp/PPI
       if (( $? != 0 ));then
         echo "copying problem of the file"
       fi
     fi
    else
       echo "$fichier/"MSV01".$numsoc.$numrun.xml not present"
    fi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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