Script sh : problème avec test - Linux et OS Alternatifs
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 ?
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.
Marsh Posté le 01-01-2006 à 22:11:38
Heu, ce n'est pas la faute de "test" là
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
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
(je tiens à remercier publiquement l'inventeur du copié/collé : Merci )
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.
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