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 :

unexpected end of file


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 unexpected end of file
    Bonjour à tous ;
    voici le code qui me pose problème :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    #!/bin/bash
    set -u
    annee=2018
    base=Calendrier2018.xml
    fichName=""
    fichCal="calendrier$annee.html"
    fichStat="statistiques$annee.html"
    fichHist="histogrammes$annee.html"
    services=(ECM RIBADEAU MORANCE BERTIN CAMINO ADAMSKI GRANCHER MARFAN BRETONNEAU TROUSSEAU)
    nbService=${#services[*]}
    declare -i nbJours RH JS CA HP GE FR RR RT MOR RIB BER ADA CAM GRA MAR BRE TRO ECM echelle precision
    echelle=2;precision=3;MOR=0;RIB=0;BER=0;ADA=0;CAM=0;GRA=0;MAR=0;BRE=0;TRO=0;CA=0;RH=0;JS=0;ECM=0
    CAcolor="64,16,4";JScolor="254,100,114";RHcolor="18,122,200"
    laDate=$(date '+le %d/%m/%Y   %H:%M')
    nbJours=$((10#$(date +%j)))
    . fonctions.sh paramCheck "$@"
    if [ ${#fichName} -ne 0 ] ; then
        grep '^<j' "$base" | head -n $nbJours > "$fichName"
        TTTravail=$(./script_sed_1.sh < "$fichName" | wc -l)
    else
        TTTravail=$(grep '^<j' "$base" | head -n $nbJours | ./script_sed_1.sh | wc -l)
    fi
    tmp="<HTML><HEAD><link rel=\"stylesheet\" type=\"text/css\" href=\"stylesBis.css\"></link><TITLE>Calendrier $annee</TITLE></HEAD>"
    stat="<HTML><HEAD><link rel=\"stylesheet\" type=\"text/css\" href=\"stylesBis.css\"></link><TITLE>Statistiques $annee</TITLE></HEAD>"
    hist="<HTML><HEAD><link rel=\"stylesheet\" type=\"text/css\" href=\"stylesBis.css\"></link><TITLE>Histogrammes $annee</TITLE></HEAD>"
    tmp="${tmp}\n<BODY><h3>Calendrier $annee . Edit&eacute; $laDate</h3><table>"
    stat="${stat}\n<BODY><h3>Statistiques $annee . Edit&eacute; $laDate</h3><table>"
    hist="${hist}\n<BODY><h3>Histogrammes $annee . Edit&eacute; $laDate</h3>"
    tmp="${tmp}\n<tr id=\"numbers\"><td/><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td>"
    tmp="${tmp}\n<td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td>"
    tmp="${tmp}\n<td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td><td>31</td></tr>"
    mois=1
    for i in janvier fevrier mars avril mai juin juillet aout septembre octobre novembre decembre ; do
    tmp="${tmp}\n<tr><th>$i</th>"
    jours=$(sed -n -e "/$i/,/mois/p" "$base" | sed -n -e '/<j/p')
    jour=1
    while [ "$jours" ] ; do
    ligne_courante=${jours%%?<j*}
    jours=${jours#$ligne_courante}
    jours=${jours#?}
    type=${ligne_courante#*type=?};type=${type%%\"*}
    content=${ligne_courante#*content=?};content=${content%%\"*}
    if [ "$content" ] ; then tmp="${tmp}\n<td content=\"$content\" class=\"event\">${type}</td>"
    else tmp="${tmp}\n<td content=\"$content\">${type}</td>"
    fi
    case $type in
    CA | RH | JS )  : $(($type += 1)) ;;
    RIB | MOR | GRA | MAR | CAM)   if [ $nbJours -ge $((10#$(date -v${mois}m -v${jour}d +"%j"))) ] ; then : $(($type += 1)) ; fi ;;
    * ) ;;
    esac
    done
    tmp="${tmp}\n</tr>"
    mois=$((mois+=1))
    done
    ECM=$((TTTravail - (RIB+BER+MOR+ADA+CAM+GRA+MAR+BRE+TRO)))
    tmp="${tmp}\n</table><div id=\"projection\"></div><script type=\"text/javascript\">"
    tmp="${tmp}\nvar tds = document.getElementsByTagName(\"td\");"
    tmp="${tmp}\nfor (var i = 0;i < tds.length;i++) {tds[i].onmouseenter = handleMouseEnter;}"
    tmp="${tmp}\nfunction handleMouseEnter(e) {document.getElementById(\"projection\").innerHTML = e.target.getAttribute(\"content\");}"
    tmp="${tmp}\n</script></BODY></HTML>"
    echo -e "$tmp" > "$fichCal"
    stat="${stat}\n<tr><td/><td>ECM</td><td>Ribadeau</td><td>Moranc&eacute;</td><td>Adamski</td><td>Grancher</td>"
    stat="${stat}\n<td>Trousseau</td><td>Camino</td><td>Bertin</td><td>Bretonneau</td><td>Marfan</td><td>TOTAL</td></tr>"
    stat="${stat}\n<tr><td>Remplacements en nombre de journ&eacute;e :</td><td>$ECM</td><td>$RIB</td><td>$MOR</td>"
    stat="${stat}\n<td>$ADA</td><td>$GRA</td><td>$TRO</td><td>$CAM</td><td>$BER</td><td>$BRE</td><td>$MAR</td><td>$TTTravail</td></tr>"
    stat="${stat}\n<tr><td>Pourcentage du temps de travail :</td><td>$(. fonctions.sh percent2 $ECM $TTTravail)%</td><td>$(. fonctions.sh percent2 $RIB $TTTravail)%</td><td>$(. fonctions.sh percent2 $MOR $TTTravail)%</td>"
    stat="${stat}\n<td>$(. fonctions.sh percent2 $ADA $TTTravail)%</td><td>$(. fonctions.sh percent2 $GRA $TTTravail)%</td><td>$(. fonctions.sh percent2 $TRO $TTTravail)%</td><td>$(. fonctions.sh percent2 $CAM $TTTravail)%</td><td>$(. fonctions.sh percent2 $BER $TTTravail)%</td><td>$(. fonctions.sh percent2 $BRE $TTTravail)%</td><td>$(. fonctions.sh percent2 $MAR $TTTravail)%</td><td>100%</td></tr>"
    stat="${stat}\n</table></BODY></HTML>";echo -e "$stat" > "$fichStat"
    count=0
    while [ $count -lt $nbService ];do
        var=${services[$count]::3}
        if [ ${!var} != 0 ]; then
            hist="${hist}\n<section id=\"$var\"><div style=\"width:$(($(. fonctions.sh percent2 ${!var} $TTTravail 1) / echelle))em;\">&nbsp;</div><div> ${services[$count]</div></section>"
        fi
        $((count += 1))
    done
    hist="${hist}\n</BODY></HTML>";echo -e "$hist" > "$fichHist"
    L soucis c'est que je suis gratifié d'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ./commandes6.sh: line 85: unexpected EOF while looking for matching `"'
    ./commandes6.sh: line 86: syntax error: unexpected end of file
    et franchement ,je vois pas où se situe le " manquant ??

  2. #2
    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 exe2bin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ./commandes6.sh: line 85: unexpected EOF while looking for matching `"'
    ./commandes6.sh: line 86: syntax error: unexpected end of file
    et franchement, je vois pas où se situe le " manquant ??
    Et nous encore moins puisque ton message d'erreur parle des lignes 85 et 86 alors que le bout de code que tu donnes n'a que 78 lignes ...


  3. #3
    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,

    et le fichier fonction ? il est "clean" ?

    d'ailleurs, pourquoi est-il sourcé ? est indispensable ? assigne-t-il des variables qui sont utilisées dans le script ?
    et puis sourcer un fichier dans une substitution de commande...

    quand on a une longue chaîne contenant des guillemets, il est préférable de la mettre entre apostrophes.
    et si elle doit inclure des variables, on les concatène :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$var"'ma"chaine"'" $var"
    quand on a une variable sur plusieurs lignes, on peut la mettre sur plusieurs lignes : tente d'exécuter 2, qui est rarement une commande !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  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 Jipété Voir le message
    Et nous encore moins puisque ton message d'erreur parle des lignes 85 et 86 alors que le bout de code que tu donnes n'a que 78 lignes ...

    Ooops ,c'est vrai ,désolé.
    J'ai juste enlever qq lignes de commentaire.
    Le message devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ./commandes6.sh: line 78: unexpected EOF while looking for matching `"'
    ./commandes6.sh: line 79: syntax error: unexpected end of file
    en sachant qu'il existe une ligne 79 vide ...

    Le programme fonctionne très bien ; j'ai juste voulu remplacer les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    hist="${hist}\n<section id=\"ECM\"><div style=\"width:$(($(. fonctions.sh percent2 $ECM $TTTravail 1) / echelle))em;\">&nbsp;</div><div> ECM</div></section>"
    hist="${hist}\n<section id=\"TRO\"><div style=\"width:$(($(. fonctions.sh percent2 $TRO $TTTravail 1) / echelle))em;\">&nbsp;</div><div> TROUSSEAU</div></section>"
    hist="${hist}\n<section id=\"MAR\"><div style=\"width:$(($(. fonctions.sh percent2 $MAR $TTTravail 1) / echelle))em;\">&nbsp;</div><div> MARFAN</div></section>"
    hist="${hist}\n<section id=\"MOR\"><div style=\"width:$(($(. fonctions.sh percent2 $MOR $TTTravail 1) / echelle))em;\">&nbsp;</div><div> MORANCE</div></section>"
    par qq chose de plus léger ,sachant de d'autres lignes du même type doivent s'ajouter !

    d'ailleurs, pourquoi est-il sourcé ? est indispensable ? assigne-t-il des variables qui sont utilisées dans le script ?
    et puis sourcer un fichier dans une substitution de commande...
    j'ai voulu séparer les fonctions pour les mettre dans un autre fichier et effectivement ces fonctions assignent certaines variables du script

  5. #5
    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
    d'ailleurs, puisqu'il est sourcé au début du script, ce n'est pas la peine de le sourcé à chaque fois que tu appelles une fonction.
    quand il est sourcé, les fonctions qu'il contient deviennent disponible dans le script.
    sinon, c'est que ton source est mal foutu, et ne devrait pas être appelé en tant que source.

    ça ne va pas résoudre ton problème de " manquant.

    EDIT: ah, j'ai trouvé : ligne 73
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${services[$count]</div>
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    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 N_BaH Voir le message
    d'ailleurs, puisqu'il est sourcé au début du script, ce n'est pas la peine de le sourcé à chaque fois que tu appelles une fonction.
    quand il est sourcé, les fonctions qu'il contient deviennent disponible dans le script.
    sinon, c'est que ton source est mal foutu, et ne devrait pas être appelé en tant que source.

    ça ne va pas résoudre ton problème de " manquant.

    EDIT: ah, j'ai trouvé : ligne 73
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${services[$count]</div>
    Merci pour l'info sur le source ;
    Sinon je comprend pas de quelle ligne tu parles car la ligne 73 ne correspond pas du tout à ce que tu écris ????

  7. #7
    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
    bon, ben, essaie la 74...
    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. Unexpected end of file
    Par david_12 dans le forum Linux
    Réponses: 1
    Dernier message: 27/03/2007, 15h56
  2. Unexpected end of file error, syntax du if
    Par Patricia5 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 26/01/2007, 03h11
  3. Syntax error: unexpected end of file
    Par freakfm dans le forum Linux
    Réponses: 1
    Dernier message: 13/09/2006, 19h56
  4. Shell - erreur unexpected end of file
    Par claralavraie dans le forum Linux
    Réponses: 7
    Dernier message: 12/01/2006, 09h59
  5. Erreur unexpected end of file
    Par snoop dans le forum Linux
    Réponses: 6
    Dernier message: 22/03/2004, 10h37

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