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 dans un script shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Par défaut Erreur dans un script shell
    Bonjour,
    Je ne vois pas ou est l'erreur :
    Ci-dessous le message d'erreur :
    ./deploiement_file.ksh: ligne 15: erreur de syntaxe à la ligne 86: `"' inégalé
    le bout de code de la ligne 83 à 89 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                        RET=$?
     
       			if test $RET -ne 0 ;
     
       			then
     
           			echo "Erreur copie de ${REP_TEST} vers ${REP_DOWNLOAD} = KO"
     
     
       			fi
    ci-dessus le script complet :
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    **********************************************************
    #! /usr/bin/ksh
    set -x 
    SELF=$(basename ${0})
     
    GREP=/usr/xpg4/bin/grep
    rep_travail="/home/stage1"
     
    ALL_REP_TEST="/home/stage1/rep1 /home/stage1/rep3"
     
    LISTE_REP_TEST=""
     
    usage()
     
      {     echo "Usage: ${SELF} all | rep1_TEST rep2_TEST repn_TEST"
     
    	echo "Donner la liste des reperoires parmis celle ci"
     
    	echo  "${ALL_REP_TEST}"
     
    	echo "all pour indiquer toutes les repertoires" 
      }
    echo "test"
    while [ $# -ne 0 ]
     
    do
     
    PARAM="$(echo ${1}")
     
    case "${PARAM}" in
     
    	"all") LISTE_REP_TEST=${ALL_REP_TEST}
     
    			;;
     
    	 *) echo "${ALL_REP_TEST}" | ${GREP} -q "${PARAM}"
     
    			if [ $? -ne 0 ] ;
     
    			then
     
    				echo "La region \"${PARAM}\" n existe pas !!!" ;
     
    				usage
     
    				exit 1
     
    			else
                            ALL_REP_TEST="${LISTE_REP_TEST} ${PARAM}"
                            fi  
     
    			;;
    esac
     
    shift
     
    done 
     
     
    if [ ${LISTE_REP_TEST} = "" ]
     
    then
     
    	usage
     
    	exit 2
     
    fi
     
     
    for REP_TEST in ${LISTE_REP_TEST}
     
    do 
     
     
     
     case ${REP_TEST}  in 
     
     
    /home/stage1/rep1 ) REP_DOWNLOAD=/home/stage1/rep2
                        cd ${REP_TEST}
                        liste1=$(ls | tee ${rep_travail}/liste_fic1)
                         for i in ${liste1}
      			do 
    				if [[ -e ${REP_DOWNLOAD}/$i ]] &&
    				[[ $(ls -s "${REP_TEST}/$i" | cut -f1 -d' ') -ge $(ls -s "${REP_DOWNLOAD}/$i" | cut -f1 -d' ') ]] 
    	 			then 
    				echo "le fichier $i est present avec la meme de taille";
    				else 
    				echo " fichier introuvable" ;
    				exit 5;
    				fi           
     			done 
                            RET=$?
     
       			if test $RET -ne 0
     
       			then
     
           			echo "Erreur copie de ${REP_TEST} vers ${REP_DOWNLOAD} = KO"
     
     
     
       			fi 
    			;;
     
    /home/stage1/rep3 ) REP_DOWNLOAD=/home/stage1/rep4
                        cd ${REP_TEST}
                        liste1=$(ls | tee ${rep_travail}/liste_fic1)
                         for i in ${liste1}
      			do 
    				if [[ -e ${REP_DOWNLOAD}/$i ]] &&
                   [[ $(ls -s "${REP_TEST}/${i}" | cut -f1 -d' ') -ge $(ls -s "${REP_DOWNLOAD}/${i}" | cut -f1 -d' ') ]] 
    	 			then 
    				echo "le fichier $i est present avec la meme de taille" 
    				else 
    				echo " fichier introuvable" ;
    				exit 5;
    				fi           
     			done 
                            RET=$?
     
       			if test $RET -ne 0 ;
     
       			then
     
           			echo "Erreur copie de ${REP_TEST} vers ${REP_DOWNLOAD} = KO"
     
     
     
       			fi 
    			;;
     esac 
     
    done
    ******************************************************

  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,

    ligne 27la substitution de commande n'est pas utile, echo non plus.NB: les variables en majuscules sont par convention des variables d'environnement.
    tu peux utiliser un panachage pour la lisibilité.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Par défaut erreur sur le script
    Merci pour la réponse .

    j'ai modifié le script sur la variable PARAM


    une autre erreur différente

    ligne 15: erreur de syntaxe à la ligne 19: `in

    Je ne vois pas ou est le problème.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Par défaut
    Bonjour,
    Merci pour la réponse, mais quand je positionne la variable correctement, il génére une erreur sur le case .
    ./test1.sh: line 16: Erreur de syntaxe près du symbole inattendu « $'in\r' »
    '/test1.sh: line 16: `case "${PARAM}" in

    Code shell : 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
     
    #! /usr/bin/sh
    set -x 
    SELF=$(basename ${0})
    GREP=/usr/xpg4/bin/grep
    rep_travail="/home/stage1"
    ALL_REP_TEST="/home/stage1/rep1 /home/stage1/rep3"
    LISTE_REP_TEST=""
    function usage {     echo "Usage: ${SELF} all | rep1_TEST rep2_TEST repn_TEST"
    	echo "Donner la liste des reperoires parmis celle ci"
    	echo  "${ALL_REP_TEST}"
    	echo "all pour indiquer toutes les repertoires" 
      }
    while [ $# -ne 0 ]
    do
    PARAM="${1}"
    case ${PARAM} in
    	all) LISTE_REP_TEST=${ALL_REP_TEST}
    			;;
    	 *) echo "${ALL_REP_TEST}" | ${GREP} -q "${PARAM}"
    			if [ $? -ne 0 ] 
    			then
    				echo "Le reperoire \"${PARAM}\" n'existe pas !!!" ; " ;
    				usage
    				exit 1
    			else
                ALL_REP_TEST="${LISTE_REP_TEST} ${PARAM}"
                fi  
    			;;
    esac
    shift
    done

  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
    "all") LISTE_REP_TEST=${ALL_REP_TEST}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	"all") LISTE_REP_TEST="${ALL_REP_TEST}"
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    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
    en fait, il est difficile pour moi de diagnostiquer tout le script, je n'ai pas les mêmes erreurs : nous n'utilisons probablement pas la même version de ksh.
    in\r
    si tu n'exécutes pas le script sur la même machine que celle sur laquelle il a été écrit, il faudrait passer le script par tofrodos.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Par défaut
    Bonjour,
    As tu une idée pourquoi il bug sur la structure "case ${variable} in"
    Message d'erreur :
    ' inattendunt_test_file: ligne 15: erreur de syntaxe à la ligne 19: `in


    Code Shell : 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
    while [ $# -ne 0 ]
    do
    PARAM="${1}"
    case ${PARAM} in
    	all) LISTE_REP_TEST=${ALL_REP_TEST}
    			;;
    	 *) echo "${ALL_REP_TEST}" | ${GREP} -q "${PARAM}"
    			if [ $? -ne 0 ] 
    			then
    				echo "Le reperoire \"${PARAM}\" n'existe pas !!!" ; " ;
    				usage
    				exit 1
    			else
                ALL_REP_TEST="${LISTE_REP_TEST} ${PARAM}"
                fi  
    			;;
    esac
    shift
    done

    Merci

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 472
    Par défaut
    Bonsoir,

    Il y a une raison particulière pour que tu utilises la balise Strike « S » ou est-ce que tu cherchais en fait à utiliser [code] et [/code] (le « # » ) ?

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

Discussions similaires

  1. Gérer les erreurs ftp dans un script shell
    Par talvins dans le forum Administration système
    Réponses: 2
    Dernier message: 18/08/2008, 17h15
  2. Erreur avec make appellé dans un script shell
    Par Neuromancien2 dans le forum C
    Réponses: 2
    Dernier message: 27/01/2008, 01h20
  3. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  4. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  5. [Apache] Erreur dans mes scripts CGI
    Par GLDavid dans le forum Apache
    Réponses: 2
    Dernier message: 28/08/2004, 06h14

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