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 :

Erreur de syntaxe dans un script


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut Erreur de syntaxe dans un script
    Bonjour à tous ;
    voici la partie de mon script concernée par une erreur de syntaxe que je ne comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    20 : if [ $actualYear -ne $annee ] ; then
    21 : if [ "$monJour * $monMois" = 0 ] ; then { echo 'ERREUR : options -j -m non-renseignees ??' ; exit 1 }
    22 : fi
    23 : elif [ "$monJour * $monMois" = 0 ] ; then { monJour=$((10#$(date +%d))) ; monMois=$((10#$(date +%m))) }
    24 : fi
    ./commandes6.sh: line 22: syntax error near unexpected token `fi'
    ./commandes6.sh: line 22: `fi'

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    Bonjour,

    indenter correctement ton code
    les accolades sont inutiles
    la conversion de base est inutile : date peut afficher les dates sans zéros
    on préfère test à [] : ça montre bien qu'il s'agit d'une commande
    qu'est-ce qu'est censé faire "$jour * $mois" = 0 ?

    il y a trop de parenthèses fermantes lors de l'assignation de monJour et monMois.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Soit tu supprimes les accolades qui ne servent à rien ici, soit tu rajoutes les 2 points virgules manquant à ces accolades

  4. #4
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Soit tu supprimes les accolades qui ne servent à rien ici, soit tu rajoutes les 2 points virgules manquant à ces accolades
    Désolé mais je comprends pas ??
    Les accolades servent bien à grouper les commandes ??
    Et je ne vois pas où je pourrais bien placer 2 points virgules ??
    De plus en retirant les accolades j'obtiens le même message pour la ligne 24 !

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 291
    Par défaut
    Bonjour

    Les accolades servent bien à grouper les commandes ??
    Pourquoi grouper des commandes déjà groupées ?

    Et je ne vois pas où je pourrais bien placer 2 points virgules ??
    exit 1 et } ne sont pas une seule commande, n'est-ce pas ?
    Donc tu mets un point virgule entre les deux.
    Sauf que tu vas supprimer les accolades.
    Donc les points virgules sont inutiles.

    De plus en retirant les accolades j'obtiens le même message pour la ligne 24 !
    Rebelote. Il faut séparer ta dernière instruction et l'accolade. (toujours inutile).
    Même cause, même effet.
    C'est bien fait l'informatique.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    il y a des cultures pour lesquelles montrer la plante de ses pieds est d'une grande inconvenance.

    et d'autres pour lesquelles la pire insulte est de lancer une chaussure...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. [Red Hat5]Erreur de syntaxe dans mon script
    Par mika0102 dans le forum Linux
    Réponses: 9
    Dernier message: 01/09/2010, 16h28
  2. Erreur de syntaxe dans un script VBS
    Par metatron dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 11/03/2009, 12h18
  3. [phpMyAdmin] Erreur de syntaxe dans mon script de création
    Par piotrr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 18/08/2008, 15h45
  4. Erreur de syntaxe dans une requete
    Par linou dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/08/2005, 12h44
  5. [JSP]Erreur de syntaxe dans un tag <option select
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 03/05/2005, 14h33

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