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 avec le caractère #


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Problème avec le caractère #
    bonjour à tous ,
    je fais appel à la fonction "percent" présente dans le fichier que voici :
    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
     
    #  fonctions.sh
     
    function percent ()
    {
    # calcule un pourcentage < 100% et affiche le résultat : parties entière et décimale
    # $1 : numérateur [ $1 < $2 ] : OBLIGATOIRE
    # $2 : dénominateur [ $2 > $1 ] : OBLIGATOIRE
    # $3 : nombre de chiffres significatifs du résultat : OBLIGATOIRE
    # $4 : si présent ,produit l'affichage de la partie entière seule : NON-OBLIGATOIRE
    local quotient reste operande count
    operande=$1;count=$3
    if [ $operande -ge $2 ] ; then count=0;quotient="0####"; fi
    while [ $count -gt 0 ] ; do
    quotient="${quotient}$((operande/$2))"
    reste=$((operande%$2))
    operande=$((reste*10))
    : $((count-=1))
    done
    PEntiere=${quotient:1:2};PEntiere=${PEntiere#0}
    PDecimale=${quotient:3:2}
    if [ $# -eq 4 ] ; then echo "$PEntiere"
    else echo "$PEntiere,$PDecimale"
    fi
    }
    function paramCheck ()
    {
    # gestion des paramètres
    }
    funcName="$1"
    shift
    $funcName "$@"
    je reçois le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fonctions.sh: line 31: syntax error near unexpected token `}'
    Examinant plus avant je me rend compte que caractère "{" dans l'expression est lié au caractère fermant "}" de la fonction ???
    Dans mon éditeur (Xcode) ces 2 caractères sont liés.
    Je pense que cela est dû au "#" de l'expression mais alors comment faire puisque ce caractères est essentiel dans le cadre d'extraction de motif ?

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

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

    Quel est ton interpréteur de commande ? Je doute que ce soit sh. Pourtant, tu appelles ton script "fonctions.sh". Appelle-le fonction.bash ou fonctions.zsh ou etc, en fonction de ton cas.

    Si c'est vraiment sh, tu as probablement mis dans le mille en disant que la commande n'est pas interprétée comme une substitution mais comme un commentaire à partir du croisillon.

    Les scripts commencent généralement, sur la première ligne, par un shebang, pour indiquer avec quel interpréteur de commande le texte doit être compris. Par exemple:

  3. #3
    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
    Salut
    l'interpréteur est /bin/bash ... quoique , maintenant que tu le dis .
    En réalité je source le fichier à partir d'un fichier principal invoqué par l'interpréteur ....

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

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

    function et (), sans générer d'erreur, sont un pléonasme.

    @Jipété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maFonc()
    {
       : inachevée
    }
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    @Jipété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maFonc()
    {
       : inachevée
    }

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    Salut,

    c'est bizarre ce que tu racontes car moi, j'ai l'erreur là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function paramCheck ()
    {
    # gestion des paramètres
    } # ici l'erreur "Erreur de syntaxe près du symbole inattendu « } »"
    Et je m'en sors avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function paramCheck ()
    {
    	# gestion des paramètres
    	echo 'bidon'
    }
    (Les TAB juste pour l'esthétique et la lisibilité)

    On dirait donc qu'une fonction déclarée et dont on a mis en place le squelette a besoin d'au moins une instruction.

    EDIT : pris de vitesse par Flodelarab mais j'avais pensé comme lui et la présence ou l'absence du shebang ne change rien...

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

Discussions similaires

  1. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10
  2. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  3. [SAX] Problème avec les caractères spéciaux
    Par abdou.sahraoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 18/07/2005, 10h07
  4. [ToolTip] Problème avec le caractère "\n"
    Par thomas_strass dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 30/09/2004, 09h19
  5. problème avec le caractère saut de ligne ...
    Par vbcasimir dans le forum Administration
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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