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.
max-mag
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.
Sebou77
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 ?
max-mag
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 ?