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 :

Unexpected end of file error, syntax du if


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Unexpected end of file error, syntax du if
    Salut, Quelqu'un pourrait m'aider?

    Je suis en train de compiler un script bash, j'utilise le shell bash du cygwin mais apparemment le shell ne compile pas la sentence if, le code est le suivant:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #!/bin/bash
     
    TASK="EX"
    LIBS="date_time.gra number.gra next.gra"
    PHOENIX=../..
    SingleFile=0
     
    # if separate files, pack into single file
    if [ $SingleFile -eq 0 ]
    then
    #   if file exists, save it as *.old
       if [ -e $TASK.gra ]
       then
            mv $TASK.gra $TASK.gra.old
       fi
       cat *.gra > xxx
       mv xxx $TASK.gra
    fi
     
    # append lib grammars to file
    cd $PHOENIX/Grammars/
    cat $LIBS >> ../Example/Grammar/$TASK.gra
    cd ../Example/Grammar/
    echo $pwd
     
    # remove old compiled files
    rm base.dic
    rm nets
    rm log
    rm $TASK.net
     
    # create list of nets to be compiled
    cat $TASK.gra | $PHOENIX/Scripts/mk_nets.perl > nets
     
    # compile grammar output messages to file "log"
    echo "compiling grammar"
    $PHOENIX/ParserLib/compile_grammar.c -f $TASK > log
    grep ERROR log
    grep WARN log
     
    # flag leaf nodes for extracts function
    echo "flagging leaf nodes"
    $PHOENIX/ParserLib/concept_leaf.c -grammar $TASK.net
    si je met en commentaires le if, ça marche. J'ai déjà essayé avec des scripts d'exemple et c'est pareil, le shell ne trouve pas la syntaxe du if.

    Merci
    **********************************

    Merci al1_24, j'ai lu le man sh comme tu m'a dit et apparement la syntax c'est bonne, mais l'interpreteur bash m'indique un erreur de syntax dans les expressions conditionnelles, comme j'ai déjà dit, j'ai cherche dans le man sh est la syntax c'est correcte, je n'ai sais pas si c'est à cause du cygwin, peut-être il manque un package?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 104
    Points : 28 394
    Points
    28 394
    Par défaut
    Essaye comme ça :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #!/bin/bash
    TASK="EX"
    LIBS="date_time.gra number.gra next.gra"
    PHOENIX=../..
    SingleFile=0
    # if separate files, pack into single file
    if [[ ${SingleFile} -eq 0 ]]
    then
    #   if file exists, save it as *.old
       if [[ -e ${TASK}.gra ]]
       then
            mv ${TASK}.gra ${TASK}.gra.old
       fi
       cat *.gra > xxx
       mv xxx ${TASK}.gra
    fi
    # append lib grammars to file
    cd ${PHOENIX}/Grammars/
    cat ${LIBS} >> ../Example/Grammar/${TASK}.gra
    cd ../Example/Grammar/
    echo ${PWD}
    # remove old compiled files
    rm base.dic
    rm nets
    rm log
    rm ${TASK}.net
    # create list of nets to be compiled
    cat ${TASK}.gra | ${PHOENIX}/Scripts/mk_nets.perl > nets
    # compile grammar output messages to file "log"
    echo "compiling grammar"
    ${PHOENIX}/ParserLib/compile_grammar.c -f ${TASK} > log
    grep ERROR log
    grep WARN log
    # flag leaf nodes for extracts function
    echo "flagging leaf nodes"
    ${PHOENIX}/ParserLib/concept_leaf.c -grammar ${TASK}.net
    une rapide consultation de man sh t'aurait montré que la syntaxe [ test ] n'est pas prise en charge par le bash de cygwin.

    PS. bash n'est pas un compilateur, mais un interpréteur

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Encore des erreurs
    Merci beaucoup pour tes conseils al1_24, j'ai fait comme tu m'a dit, c'est bon le bash prend en compte les if mais je obtiens des erreurs de syntax dans les expressions conditionnelles, j'ai cherché dans le man sh , apparement la syntax est correcte, je ne sais pas sera le cygwin? ou peut-être il manque un package?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 104
    Points : 28 394
    Points
    28 394
    Par défaut
    Citation Envoyé par Patricia5
    je obtiens des erreurs de syntax dans les expressions conditionnelles
    Quelles erreurs ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Encore des erreurs
    Merci de demander, l'interpreteur m'envoi le message suivant:

    Syntax error in conditional expression near of ']]', dans les deux if, j'ai fait interpreter le script dans une machine unix, et ça marche très bien, j'ai pas de soucis d'erreurs... mais dans le cygwin j'arrive pas, j'ai déjà consulté le man sh, et apparement la syntax est correcte, je trouve pas l'erreur...

    Merci d'avance

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    question bête , mais avec quoi comme editeur as tu ecrit ce script ? l'editeur windows ?
    Sa pourrait bien ressembler a un probleme de terminaison de ligne (0xA 0xD) au lieu de 0xA)

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut SourceEdit
    Merci MarcG, il s'agisait de ça, j'ai créé à nouveau le fichier dans un editeur unix et ça marche.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut sans extensions .c
    Merci Al1_24 pour tous tes conseils, après executer le script j'ai obtenu l'erreur, File or directory not found quand le script appellait les fichiers avec extension .c, j'ai enlevé l'extensio et ça a marché

    code:
    #!/bin/bash
    TASK="EX"
    LIBS="date_time.gra number.gra next.gra"
    PHOENIX=../..
    SingleFile=0
    # if separate files, pack into single file
    if [[ ${SingleFile} -eq 0 ]]
    then
    # if file exists, save it as *.old
    if [[ -e ${TASK}.gra ]]
    then
    mv ${TASK}.gra ${TASK}.gra.old
    fi
    cat *.gra > xxx
    mv xxx ${TASK}.gra
    fi
    # append lib grammars to file
    cd ${PHOENIX}/Grammars/
    cat ${LIBS} >> ../Example/Grammar/${TASK}.gra
    cd ../Example/Grammar/
    echo ${PWD}
    # remove old compiled files
    rm base.dic
    rm nets
    rm log
    rm ${TASK}.net
    # create list of nets to be compiled
    cat ${TASK}.gra | ${PHOENIX}/Scripts/mk_nets.perl > nets
    # compile grammar output messages to file "log"
    echo "compiling grammar"
    ${PHOENIX}/ParserLib/compile_grammar -f ${TASK} > log
    grep ERROR log
    grep WARN log
    # flag leaf nodes for extracts function
    echo "flagging leaf nodes"
    ${PHOENIX}/ParserLib/concept_leaf -grammar ${TASK}.net


    je suppose que ça c'est doit à la version du cygwin peut-être?

    Alors problème resolu, Merci à tous!!!

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

Discussions similaires

  1. ./CreateCert.sh: line 221: syntax error: unexpected end of file
    Par momoski dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 24/04/2013, 21h13
  2. [shell] syntax error: unexpected end of file
    Par travailmichel dans le forum Linux
    Réponses: 1
    Dernier message: 10/02/2011, 15h34
  3. Réponses: 7
    Dernier message: 01/06/2009, 09h15
  4. Syntax error: unexpected end of file
    Par freakfm dans le forum Linux
    Réponses: 1
    Dernier message: 13/09/2006, 19h56
  5. Erreur unexpected end of file
    Par snoop dans le forum Linux
    Réponses: 6
    Dernier message: 22/03/2004, 10h37

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