Patrick Posté 1 Mars 2006 Posté 1 Mars 2006 Bonjour à tous, je lance un appel aux spécialistes du bash. J'ai besoin de propager une modification faite sur 2 fichiers à un ensemble de repertoire sur mon serveur. Comme il y a plus de 400 répertoire j'ai pensé faire un petit script pour automatiser la tache et ne pas y paser des heures. Voici le script en question, faire.sh : #!/bin/shfor rep in *; do if [ -d $rep ]; then echo $rep; cp -R /home/domaine/dossier/fiche1.php $rep; cp -R /home/domaine/dossier/fiche2.php $rep; cp -R /home/domaine/dossier/fiche3.php $rep; fidone Quand je lance l'éxécution du script j'ai systématiquement : ./faire.sh: line10: syntax error: unexpected end of file J'ai beau ouvrir les yeux, je ne vois pas le problème. Toute aide serait la bienvenue. Merci par avance. Cordialement, Patrick.
NorSeb Posté 1 Mars 2006 Posté 1 Mars 2006 Bonjour, Avec quoi (et sous quel OS) edites-tu le script ?
Dan Posté 1 Mars 2006 Posté 1 Mars 2006 Ce script marche bien chez moi... Essaie avec: #!/bin/shfor rep in *do if [ -d $rep ] then echo $rep; /bin/cp /home/domaine/dossier/fiche[123].php $rep fidone Dan
Patrick Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 Bonjour, Merci pour vos réponses. Voici le résultats des courses : Toujours la même erreur mais ligne 12 au lieu de 10 après avoir fait les modifications proposées par Dan. Pour répondre à NorSeb, le script est écrit avec l'éditeur VI du serveur (via Putty) Bon ben vais je devoir me le coltiner à la main ? Help ! Cordialement, Patrick
Dan Posté 1 Mars 2006 Posté 1 Mars 2006 Dis-moi dans quel répertoire se trouve ton script, que je jette un coup d'oeil...
Patrick Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 Je suis qu'un boudiné des doigts ! J'ai mis un espace après l'instruction do ce qui à rpiori ne plaisait pas au shell. Voilà tout est rentré dans l'odre. Merci à vous de votre aide. Heu tiens juste une petite dernière, vous auriez un autre éditeur à me proposer que VI ? ++ Patrick
Dan Posté 1 Mars 2006 Posté 1 Mars 2006 Tout bon admin système se doit d'utiliser -et de maîtriser- "vi". Sinon, tu as aussi "pico" sur ton serveur... un peu plus simple que "vi". Dan
Patrick Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 (modifié) Dis-moi dans quel répertoire se trouve ton script, que je jette un coup d'oeil... <{POST_SNAPBACK}> Merci de ton offre Dan (il semble que nos posts se sont croisés), en fait c'est sur un serveur chez un autre fournisseur qu'OVH (je ne le site pas pour éviter une pub maladroite) Tout semble bien fonctionner maintenant, mais si j'ai un autre souci je ne manquerai de faire appel à tes lumières. Je te remercie beaucoup de ton offre et pour ton intérêt. Concernant ceci : Tout bon admin système se doit d'utiliser -et de maîtriser- "vi". laugh.gif pour moi, il y a un mot de 3 lettres en trop, enfin pour caractériser mes aptitudes ... et tu en sais quelque chose ...Pico qu'il me dit le monsieur, oki, je vais m'y intéresser Cordialement, Patrick Modifié 1 Mars 2006 par Adifco Référencement
NorSeb Posté 2 Mars 2006 Posté 2 Mars 2006 Apprendre VI, c'est comme apprendre une autre langue 1° C'est un peu long 2) Il ne faut pas cesser de pratiquer
Dan Posté 2 Mars 2006 Posté 2 Mars 2006 J'ai mis un espace après l'instruction do ce qui à rpiori ne plaisait pas au shell. Voilà tout est rentré dans l'odre. Un espace ne devrait pas gêner le shell, vu qu'il n'en fait rien... A moins que ce soit un caractère de contrôle, qui peut ne pas s'afficher...
destroyedlolo Posté 2 Mars 2006 Posté 2 Mars 2006 J'ai vu des ; en fin de ligne. C'est peut etre ca ...
Dan Posté 2 Mars 2006 Posté 2 Mars 2006 J'ai vu des ; en fin de ligne.C'est peut etre ca ... Non plus ! Le ; est une "No-Op" (instruction "vide")
Patrick Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 A moins que ce soit un caractère de contrôle, qui peut ne pas s'afficher... <{POST_SNAPBACK}> Salut, je rebondis la dessus car j'ai poussé un peu plus loin, histoire de ne pas rester idiot. En fait, j'ai fait le script avec un éditeur de texte, je l'ai placé sur mon serveur (non OVH) via un client FTP et je l'ai modifié avec l'édituer VI du serveur. Pour savoir pourquoi le script ne fonctionnait pas chez moi et pourquoi il tournait chez Dan, j'ai transféré ce script sur mon serveur OVH (distribution différente du premier) et la le miracle se produisit ... En fait, sur mon fichier original, j'avais un vilain ^M derrière l'instruction DO, invisible sur le premier serveur (à priori représenté par un espace). Voili voilou, ça me servira de leçon, et merci à tous de m'avoir aider. Cordialement, Patrick
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant