Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 14h23   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 45
Points : 11
Points : 11
Par défaut Script bash de fichiers d'un repertoire

Bonjour.
J'ai un léger problème avec un script bash qui doit copier d'un répertoire source vers un répertoire destination uniquement les fichiers (et pas les répertoires ). Mon script fonctionne mais il prend en compte mes fichiers répertoire alors que je les ai exclut a travers une condition.
Voici le code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
#!/bin/bash
 
clear
echo -e \\n \\t "Quel est le repertoire source que vous voulez copier ?"
read src
if [ -z $src ] ; then
echo -e \\n \\t "Vous n'avez pas donner le nom du repertoire source !"
exit
fi
if [ ! -d $src ] ; then
echo -e \\n \\t $src" n'est pas un repertoire !"
exit
fi
 
echo -e \\n \\t "Quel est le repertoire de destination ?"
read dst
if [ -z $dst ] ; then
echo -e \\n \\t "Vous n'avez pas donner le nom du repertoire de destination !"
exit
fi
if [ ! -d $dst ] ; then
echo -e \\n \\t $dst" n'est pas un repertoire !"
exit
fi
 
droitsEcriture=1
 
if [ ! -w $dst ] ; then
chmod u+w $dst
droitsEcriture=0
fi
#Copie les fichiers ordinaire d'un repertoire source dans un repertoire destination si non-existence des fichiers dans le repertoire de destination
appartient=0
for ficSrc in `ls $src` ; 
do 
	if [ ! -d $ficSrc ] ; #Le script ne devrait traiter que les fichiers , pourtant il essaye tout de meme de copier les repertoires  
		then
			for ficDst in `ls $dst` ; 
			do
				if [ $ficSrc == $ficDst ] ; 
				then
					appartient=1
				fi
			done
		if [ $appartient == 0 ] ; then
		cp $src/$ficSrc $dst
		fi
	fi
done
 
if [ $droitsEcriture == 0 ] ; then
chmod u-w $dst
fi
A l’exécution du script , la copie se passe correctement mais j'ai des messages d'erreur du type:
cp : omission du repertoire nomRepertoire

Merci de votre aide.
Freedom57 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/09/2011, 15h00   #2
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
Salut,

Code :
1
2
 
if [ ! -d $ficSrc ]
Ce test foire car il effectue le test non pas à partir du repertoire source sinon à partir du répertoire courant.

Tu dois donc adapter la ligne de cette manière pour que le test réussisse.

Code :
1
2
 
if [ ! -d "$src/$ficSrc" ]
__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 21/09/2011, 15h17   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 45
Points : 11
Points : 11
Par défaut Ah oui effectivement

Merci pour l'aide!
Freedom57 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h04.


 
 
 
 
Partenaires

Hébergement Web