Script bash qui parcoure les repertoire

Fermé
prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016 - 11 déc. 2016 à 21:30
 Utilisateur anonyme - 12 déc. 2016 à 18:11
Bonjour,
Voici mon script je voudrais savoir ou ce trouve l'erreur de syntaxe :

#!/bin/bash

if [ $# -ne 1 ]
then
echo Usage : $0 dossier
exit 1
elif [ -f $1 ]
then
echo "erreur : l'argument saisi n'est pas un dossier"
exit 1
for i in "$1"/*/**/***
do
if test [ -f "$i" ]
then
./projet.sh "$i"
fi
fi
done


ça me dit: ligne 18 erreur de syntaxe fin prematuré
j'aimerai savoir ou est le probleme



Merci d'avance
A voir également:

2 réponses

idiart33 Messages postés 172 Date d'inscription samedi 12 octobre 2013 Statut Membre Dernière intervention 13 décembre 2020 9
11 déc. 2016 à 22:24
salut !
Essaie de supprimer ta virgule dans le echo, elle n'est pas prise comme un simple caractère.
0
prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016
12 déc. 2016 à 01:17
une virgule? le premier echo ou le deuxieme?
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
12 déc. 2016 à 08:32
Salut,

#!/bin/bash

if [ $# -ne 1 ]
then
echo Usage : $0 dossier
exit 1
elif [ -f $1 ]
then
echo "erreur : l'argument saisi n'est pas un dossier"
exit 1
fi
for i in "$1"/*/**/***
do
if test [ -f "$i" ]
then
./projet.sh "$i"
fi
done  

0
prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016
12 déc. 2016 à 13:29
Merci pour correction. j'ai reussi à faire un script qui parcourre un repertoire donné en argument et copie tout les fichier qui s'y trouve dans le repertoire SAVE:
#!bin/bash

if [ $# -ne 1 ]
then
echo usage : $0 dossier
exit 1
elif [ -f $1 ]
then
echo " Erreur : l'argument saisi n'est pas un dossier"
exit 1
fi
for i in "$1"/*/**/***
do
cat $1/*/**/*** >> ~/SAVE/save.txt
echo "Sauvegarde réussie"
done


Seulement voila, le scripte n'etant pas récursif, il ne fonctionnera pas pour les sous-sous-sous-sous....répertoires

Je voudrai donc savoir le mettre en recursivité




ps:comment utiliser la balise code sur ce forum?
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016
12 déc. 2016 à 13:55
#!/bin/bash

shopt -s globstar

if [ $# -ne 1 ]
then
echo Usage : $0 dossier
exit 1
elif [ -f $1 ]
then
echo "erreur : l'argument saisi n'est pas un dossier"
exit 1
fi
for i in ${1}/**
do
if test [ -f "$i" ]
then
./projet.sh "$i"
fi
done


Pour les balises il y a le pictogramme <>.

Sinon :

<code sh >
#!/bin/bash

if [ $# -ne 1 ]
then
...</code>

Donne :
#!/bin/bash

if [ $# -ne 1 ]
then
...
0
prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016
12 déc. 2016 à 14:10
Ah oui désolé j'ai oublier de preciser que les command cp,find, globstar et l'option -R sont interdites
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016
12 déc. 2016 à 15:06
Alors il te faut refaire une boucle (une fonction en fait) pour chaque sous-répertoire trouvé, et l'appliquer tant que...
0
prdnx Messages postés 5 Date d'inscription dimanche 11 décembre 2016 Statut Membre Dernière intervention 12 décembre 2016 > UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020
12 déc. 2016 à 15:08
oui c'est exactement ce que j'essaie de faire mais je n'arrive pas.
0