A ta ligne 14, le premier apostrophe est en fait un accent grave  qui ne
risque pas
de s'apparier avec l'apostrophe final. De plus, il a une toute autre
signification
pour un shell (comme "$(" en fait).

A partir de là, ton script est dans le cirage car il considère que tout ce
qui suit le (seul)
apostrophe est une chaîne que tu ne termines évidamment pas ...





serge carrere <[EMAIL PROTECTED]>@linux-mandrake.com le 19/01/2001
17:34:20

Veuillez répondre à [EMAIL PROTECTED]

Envoyé par :   [EMAIL PROTECTED]


Pour :    [EMAIL PROTECTED]
cc :  [EMAIL PROTECTED]

Objet :   [Confirme] demande d'infos sur programme shell


Bonjour, voici un petit problème que je ne maîtrise pas.
Je n'ai jamais appris de rpogrammation sur quoi que ce soit, donc, j'eesaie
d'apprendre avec les exercices trouvés ça et là dans les magazines...
Donc, j'ai créé un petit programme shell comme indiqué dans un magazine
pour
éradiquer les fichiers log en trop et éviter qu'il ne saturent mes
partitions.
L'exemple est pour faire un script shell qui se lance tous les mois et me
vire les fichiers logs sélectionnés dans un fichier "/etc/cleantab" que
j'ai
défini. Ce script me permet en outre de ne garder que les 200 dernières
lignes de chaque fichier log sélectionné.
J'ai écrit le script en suivant l'exemple donné, mais avant de l'installer
dans mon "cron monthly", j'ai voulu le tester en tapant: ./cleaner (son
nom)
et là j'ai eu deux messages d'erreur:
le premier concerne la ligne 14
./cleaner: line 14: unexpected EOF while looking for matching ",
Qu'est-ce que cela veut dire ? (pour moi c'est du chinois)
le second concerne la ligne 24
./cleaner: line 24: syntax error: unexpected end of file
Or mon fichier ne comprends que 23 lignes ??
Voici maintenant le script:
-----------------------------------------------------------
#! /bin/bash

# d'abord s'assurer que la cleantab existe
if [ ! -e /etc/cleantab ]
then
       exit 0
fi

#créer un fichier temporaire qui servira de tampon
temporaire=$(mktemp /tmp/cleantemp.XXXXXX)

#lire chaque entrée dans la cleantab et conserver
#seulement les 200 dernières lignes de chaque fichier
for fichier in $(awk `{ print $0 }' /etc/cleantab)
do
        tail -lines=200 $fichier >$temporaire
        cat <$temporaire >$fichier
done

#effacer le fichier temporaire
rm -f $temporaire

 exit 0
-----------------------------------------------------------
Si une âme charitable pouvait m'expliquer ce qui se passe et m'indiquer le
moyen de m'en sortir, merci d'avance.
A ciao, serge.


--
T'as le bonjour de LEO!
http://leoloden.citeweb.net/


=?iso-8859-1?Q?$RFC822.eml?=

Répondre à