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 confirmé
    Inscrit en
    Février 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 177
    Par défaut unexpected end of file
    Bonjour,
    tout est dans le titre, j'ai un script ksh que j'execute sous windows via Cygwin, mais ça marche pas trop bien
    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
    if [ ! $# -eq 3 ];
    then
    	echo $0 user password instance
    	exit 1
    fi
    ret=0
     
    printf "Chargement Cpta generique sur  %s\n" $3
     
    timestamp=_`date +%Y%m%d_%H%M`
    logFile=$(dirname $0)/../log/param_generique$timestamp.log
    printf "preload_param_generique....."
    sqlplus -s $1/$2@$3 @../sql/preload_param_generique.sql >> $logFile 2>&1 
    ret=$(($ret+$?))
    if [[ ret -ne 0 ]] ; 
    then 
     	echo " !! Erreur !!"
    	exit 1
    else 
     	echo " OK"
    fi
     
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] -x &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_PARAM
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC_PARAM
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_FCTE_CPT
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
     
    printf "postload_param_generique....."
    sqlplus -s $1/$2@$3 @../sql/postload_param_generique.sql >> $logFile 2>&1 
    ret=$(expr $ret + $?)
    if [[ ret -ne 0 ]] ; 
    then 
     	echo " !! Erreur !!"
    	exit 1
    else 
     	echo " OK"
    fi
    exit $ret
    merci de votre aide.

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

    as-tu tenté d'écrire et d'exécuter un script tout bête, de la même manière que celui-ci ?
    je pense à une différence d'encodage entre Windows et cygwin
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre chevronné Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Par défaut
    Bonjour,

    Quel éditeur utilises-tu ?

    Certains éditeurs Windows ont la fâcheuse habitude de supprimer la dernière ligne du fichier texte. Or, il se trouve que KSH désire ardemment que la ligne 50 dans ton listing soit présente et vide...

    @+

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 177
    Par défaut
    merci de vos réponses.
    - oui tout a fait, j'ai déjà tester des script qui s’exécute correctement sous Windows, d'ailleurs c'est la première chose à laquelle j'ai pensé.
    - pour l’éditeur , j'utilise l’éditeur standard d'Eclipse et pour être sûr que la dernière ligne n'est pas supprimée, j'ai édité le script avec UltraEdit, et ça à l'air de bien figurer.
    j'avoue que je sèche !!!!

  5. #5
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par passion_info Voir le message
    Bonjour,
    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
     
    ...
    ret=0
    ...
    ret=$(($ret+$?))
    if [[ ret -ne 0 ]] ; 
    then 
     	echo " !! Erreur !!"
    	exit 1
    else 
     	echo " OK"
    fi
    ...
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ...
    pourquoi utiliser ret il est censé rester a 0 si tout vas bien et tu sors dès que le statut de retour $? est différent de 0.
    en plust en dehors des affectation cela devrais être $ret.

    plus simple serait de s'en passer.
    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
     
    ...
    #ret=0
    ...
    #ret=$(($ret+$?))
    if [[ $? -ne 0 ]] ; 
    then 
     	echo " !! Erreur !!"
    	exit 1
    else 
     	echo " OK"
    fi
    ...
    #ret=$(expr $ret + $?)
    [[ $? -ne 0 ]] &&  exit 1
    ...

  6. #6
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Ligne 28, il y a un -x en trop après ]]:
    Citation Envoyé par passion_info Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [...]
    [[ ret -ne 0 ]] -x &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_PARAM
    ret=$(expr $ret + $?)
    Peut-être la cause du problème

  7. #7
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 177
    Par défaut
    bonjour et merci de la réponse,
    aysheaia en effet, c'est erreur bloquante mais ça ne résout pas mon pb, je continue à avoir la même erreur.

  8. #8
    Membre chevronné Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Par défaut
    Hum, dans ce cas as-tu vérifié l'encodage ?

    Sous environnement UNIX, on a des erreurs dès lors que le fichier texte est en format DOS, exemple tout bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
    echo "Yes !"
    exit 0
    Comme tu peux le voir, l'encodage est très important :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [mandraxx@gaia ~]$ file bidon
    bidon: ASCII text
    [mandraxx@gaia ~]$ ./bidon
    It works !
    [mandraxx@gaia ~]$ unix2dos bidon
    unix2dos: converting file bidon to DOS format ...
    [mandraxx@gaia ~]$ file bidon
    bidon: ASCII text, with CRLF line terminators
    [mandraxx@gaia ~]$ ./bidon
    It works !
    : numeric argument required
    [mandraxx@gaia ~]$
    On voit clairement une erreur à la ligne 11 qui n'est pas bloquante ici car le script est simple mais qui peut tout faire partir en vrille si l'algorithme est plus complexe.

    Après, je ne sais pas ce qui est préconisé pour les scripts sous Cygwin...

    @+

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par passion_info Voir le message
    Bonjour,
    tout est dans le titre, j'ai un script ksh que j'execute sous windows via Cygwin, mais ça marche pas trop bien
    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
    if [ ! $# -eq 3 ];
    then
    	echo $0 user password instance
    	exit 1
    fi
    ret=0
     
    printf "Chargement Cpta generique sur  %s\n" $3
     
    timestamp=_`date +%Y%m%d_%H%M`
    logFile=$(dirname $0)/../log/param_generique$timestamp.log
    printf "preload_param_generique....."
    sqlplus -s $1/$2@$3 @../sql/preload_param_generique.sql >> $logFile 2>&1 
    ret=$(($ret+$?))
    if [[ ret -ne 0 ]] ; 
    then 
     	echo " !! Erreur !!"
    	exit 1
    else 
     	echo " OK"
    fi
     
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] -x &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_PARAM
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC_PARAM
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
    ./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_FCTE_CPT
    ret=$(expr $ret + $?)
    [[ ret -ne 0 ]] &&  exit 1
     
    printf "postload_param_generique....."
    sqlplus -s $1/$2@$3 @../sql/postload_param_generique.sql >> $logFile 2>&1 
    ret=$(expr $ret + $?)
    if [[ ret -ne 0 ]] ; 
    then 
     	echo " !! Erreur !!"
    	exit 1
    else 
     	echo " OK"
    fi
    exit $ret
    merci de votre aide.
    Euh... est-ce qu'on ne devrait pas avoir "[[ $ret -ne 0 ]]" à la place de "[[ ret -ne 0 ]]" ?
    HTH
    )jack(

  10. #10
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 177
    Par défaut
    bonjour.
    problème résolu, on a réécrit le script et a priori c'était une erreur d'encodage.
    merci et bonne journée.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Par défaut
    Citation Envoyé par passion_info Voir le message
    bonjour.
    problème résolu, on a réécrit le script et a priori c'était une erreur d'encodage.
    merci et bonne journée.
    pour moi jack-ft avait mis le doigt sur un bug : [[ ret -ne 0 ]]
    ret ne fait pas référence à la valeur de la variable ret mais à la valeur "ret"

    par ailleurs, je n'ai pas vu de shebang dans ton script, est-ce normal ? ce n'est pas gênant en soit si le shell par défaut est le même que celui utilisé dans ton script.


+ 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