script shell : comparer 2 répertoires entre eux
Bonjour,
voila j'ai realisé un petit script shell qui permet, en passant 2 repertoire en argument, de les comparer et de renvoyer un code annonçant s'ils sont identique ou non (dans leur contenu aussi).
Le probleme est que j'ai besoin de me deplacer dans les repertoire dans le script, et que ça me renvoi cette erreur "can't cd to..."
Voici mon 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 55 56 57 58
|
# si le nombre d'arguments n'est pas egal a 2
if [ $# -ne 2 ]; then
echo "Erreur : Il faut 2 arguments."
# sinon, si le nombre d'arguments est egal a 2
elif [ $# -eq 2 ]; then
path=`pwd`
# si les deux arguments sont des repertoires
if [ -d $1 ] && [ -d $2 ]; then
# on liste le contenu du repertoire qui contient le plus d'elements
if [ `ls -l $1 | wc -l` -gt `ls -l $2 | wc -l` ]; then
rep1=$1
rep2=$2
else
rep1=$2
rep2=$1
fi
# listage du repertoire qui a le plus d'elements
contentrep1=`ls $rep1`
# on les elements de rep1
for var in $contentrep1
do
# on se place dans $rep1
cd $rep1
# si $var est un fichier dans $rep1
if [ -f $var ]; then
# on se place dans rep2
cd $rep2
# si $var n'est pas un fichier dans $rep2
if [ ! -f $var ]; then
echo "Code de retour : 1"
exit 1
fi
# sinon, si $var est un repertoire dans $rep1
elif [ -d $var ]; then
# on se place dans $rep2
cd $rep2
# si $var n'est pas un repertoire dans $rep2
if [ ! -d $var ]; then
echo "Code de retour : 1"
exit 1
fi
fi
done
# si on arrive ici, c'est que les deux repertoires sont identiques
echo "Code de retour : 0"
exit 0
fi
fi |
Voila, j'ai essayé plein de bidouillages syntaxique mais je n'y arrive pas :(
Si quelqu'un connait une solution ou une alternative merci d'avance :mouarf:
++