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 22/01/2010, 16h55   #1
Invité de passage
 
Inscription : février 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 3
Points : 1
Points : 1
Par défaut Syntax error incompréhensible dans script shell!

Bonjour à tous!
Je suis au bord de la crise de nerf, après trois jours passés à retourner mon premier script shell dans tous les sens.

Coté config, je suis en mode console avec freeBSD.

Mon problème? Qu'importe mon programme, aussi simplet soit-il, j'ai droit à un syntax error à se pendre. Un exemple? mon fichier test.sh:

Code :
1
2
3
4
5
6
#!/bin/sh
 
if [ $1 = "toto" ]
then
	echo "Bravo, tu sais passer un nom en paramètre!"
fi
Bilan (si il y a un saut à la ligne après le fi)
$>sh test.sh
test.sh: 7: Syntax error: end of file unexpected (expecting "then")

Si pas de saut à la ligne après le fi
$>sh test.sh
test.sh: 6: Syntax error: fi unexpected (expecting "then")

Sur d'autres scripts ça se produit aussi sur chaque elif (expecting "then"!), bref je vais devenir chèvre et je dois rendre un script ce soir . Un peu d'aide me sauvera la vie

EDIT: je précise que selon l'ENV je suis en tcsh mais même en tcsh j'ai le droit à cette erreur de syntaxe...
Sakesannin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2010, 17h03   #2
Membre Expert
 
Avatar de jabbounet
 
frederic frances
Inscription : juin 2009
Messages : 1 693
Détails du profil
Informations personnelles :
Nom : frederic frances
Âge : 36

Informations forums :
Inscription : juin 2009
Messages : 1 693
Points : 2 068
Points : 2 068
Ce script marche chez moi....

Cependant tu peux effectuer les vérification suivantes:
  1. le fichier est au format unix (sinon ça fera des souci)
  2. contrôle le nombre d'arguments en entrée

Pour vérifier le nombre d'argument, tu peux faire un truc du style:
Code :
1
2
3
4
5
6
 
if [ $# -eq 0 ]
then
    echo "pas d'arguments"
    exit 0
fi
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2010, 17h09   #3
Invité de passage
 
Inscription : février 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 3
Points : 1
Points : 1
Et bien merci beaucoup jabbounet, tu m'as aiguillé vers la réponse. En effet le script était importé de windows (je l'avais rédigé sous notepad++)...
Quand tu m'as parlé de format unix j'ai vérifié via un cat -e si des odieux ^M (ça m'est déjà arrivé en c....) ne s'étaient pas glissés un peu partout... Et bien si.

Merci pour ta réponse en tout cas, sans toi je n'aurai peut-etre pas pensé à vérifier ça ^^ je passe en résolu .
Sakesannin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2010, 18h41   #4
Membre Expert
 
Avatar de jabbounet
 
frederic frances
Inscription : juin 2009
Messages : 1 693
Détails du profil
Informations personnelles :
Nom : frederic frances
Âge : 36

Informations forums :
Inscription : juin 2009
Messages : 1 693
Points : 2 068
Points : 2 068
c'est un classique quand la syntaxe semble correcte....
jabbounet 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 +1. Il est actuellement 01h47.


 
 
 
 
Partenaires

Hébergement Web