Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2007, 13h38   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 5
Points : 1
Points : 1
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 :
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?
Patricia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 16h14   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 564
Points : 7 564
Essaye comme ça :
Code :
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
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h32   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 5
Points : 1
Points : 1
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?
Patricia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h37   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 564
Points : 7 564
Citation:
Envoyé par Patricia5
je obtiens des erreurs de syntax dans les expressions conditionnelles
Quelles erreurs ?
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 02h28   #5
Invité de passage
 
Inscription : janvier 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 5
Points : 1
Points : 1
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
Patricia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 08h33   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
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)
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 03h04   #7
Invité de passage
 
Inscription : janvier 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 5
Points : 1
Points : 1
Par défaut SourceEdit

Merci MarcG, il s'agisait de ça, j'ai créé à nouveau le fichier dans un editeur unix et ça marche.
Patricia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 03h11   #8
Invité de passage
 
Inscription : janvier 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 5
Points : 1
Points : 1
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!!!
Patricia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h31.


 
 
 
 
Partenaires

Hébergement Web