Script bash qui parcoure les repertoire

prdnx Messages postés 5 Statut Membre -  
 Utilisateur anonyme -
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

2 réponses

  1. idiart33 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   9
     
    salut !
    Essaie de supprimer ta virgule dans le echo, elle n'est pas prise comme un simple caractère.
    0
    1. prdnx Messages postés 5 Statut Membre
       
      une virgule? le premier echo ou le deuxieme?
      0
  2. UnGnU Messages postés 1468 Statut Contributeur 158
     
    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
    1. prdnx Messages postés 5 Statut Membre
       
      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
    2. UnGnU Messages postés 1468 Statut Contributeur 158 > prdnx Messages postés 5 Statut Membre
       
      #!/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
    3. prdnx Messages postés 5 Statut Membre
       
      Ah oui désolé j'ai oublier de preciser que les command cp,find, globstar et l'option -R sont interdites
      0
    4. UnGnU Messages postés 1468 Statut Contributeur 158 > prdnx Messages postés 5 Statut Membre
       
      Alors il te faut refaire une boucle (une fonction en fait) pour chaque sous-répertoire trouvé, et l'appliquer tant que...
      0
    5. prdnx Messages postés 5 Statut Membre > UnGnU Messages postés 1468 Statut Contributeur
       
      oui c'est exactement ce que j'essaie de faire mais je n'arrive pas.
      0