Aller au contenu

Problème avec un script bash


Patrick

Sujets conseillés

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/sh
for 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;
 fi
done

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.

Lien vers le commentaire
Partager sur d’autres sites

Ce script marche bien chez moi...

Essaie avec:

#!/bin/sh
for rep in *
do
  if [ -d $rep ]
  then
   echo $rep;
   /bin/cp  /home/domaine/dossier/fiche[123].php $rep
  fi
done

Dan

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Tout bon admin système se doit d'utiliser -et de maîtriser- "vi". :lol:

Sinon, tu as aussi "pico" sur ton serveur... un peu plus simple que "vi".

Dan

Lien vers le commentaire
Partager sur d’autres sites

Posté (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 :rolleyes:

Cordialement,

Patrick

Modifié par Adifco Référencement
Lien vers le commentaire
Partager sur d’autres sites

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... :)

Lien vers le commentaire
Partager sur d’autres sites

J'ai vu des ; en fin de ligne.

C'est peut etre ca ...

Non plus ! Le ; est une "No-Op" (instruction "vide")

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...