Script sh : problème avec test

Script sh : problème avec test - Linux et OS Alternatifs

Marsh Posté le 01-01-2006 à 20:05:54    

Bonjour,
 
Je tente d'écrire un script sh me permettant de créer dans un répertoire copie, l'ensemble de la structure d'un répertoire modèle sous forme de lien symbolique. J'ai donc écrit cela :
 
#!/bin/bash
#Script de création récursive de liens symboliques
 
for FICHIER in `ls /home/web/modele`
do
  echo $FICHIER
 
  if test -d ${FICHIER}
  then
    mkdir $FICHIER
  fi
 
  if test -f ${FICHIER}
  then
   ln -s /home/web/modele/$FICHIER $FICHIER
  fi
 
done

 
 
Mais cela ne fonctionne pas car test -d ou test -f ne reconnaissent ni les fichiers ni les répertoires.
Comment faire ?
 
Merci de votre aide

Reply

Marsh Posté le 01-01-2006 à 20:05:54   

Reply

Marsh Posté le 01-01-2006 à 20:36:46    

bah normalement avec -d ça devrait passé pour les dossiers
Et avec -e t'as essayé ? Mais là c'est juste pour savoir s'il existe, tu veux peut être être plus précis nan ?

Reply

Marsh Posté le 01-01-2006 à 20:56:43    

Je viens d'essayer avec -e, mais cela ne fonctionne pas non plus :-(
Effectivement, je veux faire la différence entre les dossiers et les fichiers.

Reply

Marsh Posté le 01-01-2006 à 22:11:38    

Heu, ce n'est pas la faute de "test" là :whistle:  
 
 
Imagine qu'il y n'a qu'un fichier toto dans /home/web/modele.
 
Tu éxecutes ton script dans /home/web/mon-nouveau-site.
 
Première itération de la boucle for : $FICHIER vaut "toto".
 
 
 
Tu testes s'il y a un dossier "toto" dans /home/web/mon-nouveau-site. Si oui, tu essayes de créer un dossier "toto" dans /home/web/mon-nouveau-site [:ciler]
 
 
Ensuite tu testes s'il y a un fichier "toto" dans /home/web/mon-nouveau-site. Si oui, tu essayes de créer un fichier "toto" dans /home/web/mon-nouveau-site [:ciler]
 
 
(je tiens à remercier publiquement l'inventeur du copié/collé : Merci :jap: )
 
 
 
Bref, ce que tu veux faire en fait, c'est tester si le fichier "toto" est un dossier dans /home/web/modele et non pas dans le dossier courant. Au passage, je te suggère d'utiliser une variable pour stocker /home/web/modele, plutôt que de de le mettre en dur comme ça.
 
 
Méfie toi des espaces aussi, dans l'état de ton script les fichiers qui en comportent dans leur nom ne seront pas gérés correctement.


Message édité par Pillow le 01-01-2006 à 22:12:10
Reply

Marsh Posté le 03-01-2006 à 11:43:13    

merci de ton aide, c'était ça.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed