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 shell : unexpected done


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Par défaut Erreur shell : unexpected done
    Bonjour à tous,

    en éxécutant ce script, j'obtiens toujours "unexpected done", malgré que j'ai vérifié la synataxe de la boucle "for", l'erreur persiste.

    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
     
     
    #!/bin/bash
     
    for i in `cat newcontext` ;do
    var1=`cut –f1 –d ' ' $i`
    var2=`cut –f2 –d ' ' $i`
     
    if [$var2=false];then
     
    for j in `cat adaptrules`;do
     
    c=`cut -f1 -d ' ' $j`
    cc=`cut -f2 -d ' ' $j`
     
    if [$c=$var1];then
    r=$cc
    endif
     
    done 
     
    sed /$var1/d currentconfig>>newconfig
     
    else
     
    for k in `cat adaptrules`;do
    var3=`cut –f1 –d ' ' $k`
    var4=`cut –f2 –d ' ' $k`
     
    if [$var3=$var1];then
    action=$var4
    endif
     
    done
    cat $action>>newconfig
     
    endif
     
    done
    merci pour votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    1. man bash
    2. faut des espaces autours des crochets
    3. faut des espaces autour du signe égale
    4. endif n'est pas une instruction bash
    5. for n'est pas l'instruction idéale pour lire un fichier
    6. N_BaH devrait se charger de te remonter les bretelles


    En gros, tu as tout faux, ou presque

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Par défaut
    salut Zipe31,

    merci beaucoup pour ton coup de main merci aussi à N_Bah. sinon, on est là pour apprendre, meme s'il s'agit de petites fautes

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 686
    Par défaut
    Citation Envoyé par thouraya24
    merci aussi à N_Bah
    attends ! je n'ai encore rien dit.

    comment lire un fichier en shell.

    je ne comprends pas qu'on ponde tout un script sans en avoir tester les commandes auparavant !

    7. cut travaille sur des fichiers, pas sur des chaînes. en tout cas, pas comme ça.
    8. cut, quand on sait lire un fichier correctement, est rarement utile dans un script.
    9. il faut mettre des guillemets autour des variables. toujours, à moins de savoir pourquoi.
    ...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Par défaut
    salut N_BAH,

    merci pour vos remarques, j'ai modifié le code comme suit mais ça marche pas toujours ...

    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
     
     
    #!/bin/bash
     
    for i in `cat newcontext` ;do
     
    var1=$(cut –f1 –d " " <<< "$i")
    var2=$(cut –f2 –d " " <<< "$i")
     
    if [ $var2 = false ];then
     
    for j in `cat adaptrules`;do
     
    c=$(cut -f1 -d" " <<< "$j")
    cc=$(cut -f2 -d" " <<< "$j")
     
    if [ $c = $var1 ];then
    r=$cc
    fi
     
    done 
     
    sed /$var1/d currentconfig>>newconfig
     
    else
     
    for k in `cat adaptrules`;do
    var3=$(cut –f1 –d" " <<< "$k")
    var4=$(cut –f2 –d" " <<< "$k")
     
    if [ $var3 = $var1 ];then
    action=$var4
    fi
     
    done
    cat $action>>newconfig
     
    fi
     
    done

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 686
    Par défaut
    « ça marche pas » n'est pas une description, c'est un constat; ça n'aide pas.

    quelles sont les données de départ ?
    quel est le résultat attendu ?
    quel est le résultat obtenu ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. shell unexpected token `done'
    Par clubinfo dans le forum Programmation système
    Réponses: 1
    Dernier message: 10/05/2011, 13h00
  2. [MySQL] Erreur mysql unexpected T_STRING
    Par nO_life dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2008, 21h58
  3. erreur incrompréhensible unexpected T_STRING
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 28/08/2008, 16h11

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