Boucle for shell qui ne traite qu'une seule valeur

Résolu
medou922 Messages postés 3 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Pouvez-vous m'aider svp?
J'écris actuellement un script qui liste les sous dossiers d'un repertoire, et qui effectue des opérations dans ces fichiers (rm , cp)...
J'ai un résultat, mais ma boucle s'arrête après le premier sous dossier et ne continue pas.
Il lit bien le nom du sous dossier, mais s'arrête net après.
Voici mon code:

#! /bin/bash


dossier=$(find . -maxdepth 1 -type d \( ! -iname ".*" \) -exec basename {} \; ) 
#count=$(find $dossier -type d | wc -l)

echo les dossiers a traiter sont $dossier
                echo ""

for  i in $dossier
do
echo vous etes dans le dossier : $i
  if [[ -d $i ]]
then
 echo Le repertoire $i existe
                cd  $i && echo $PWD
                echo ""
                echo ""
                rm -rf fichier1 fichier2
        echo $?

        echo ""
      
        cp -v /data2/new/* . 
        echo $?

        else
        echo "Il n y a plus de dossier à traiter"
fi;
done


Le script s'exécute parfaitement sur le premier dossier, mais s'arrête juste après avoir lu le nom du second dossier, sans faire les traitement.

Merci d'avance pour votre aide.

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    C'est bien de rentrer dans un répertoire (
    cd  $i && echo $PWD
    , au passage je préférerai
    cd  $i && pwd
    ), mais il faut penser à en sortir quand on a fini le traitement (
    cd ..
    ).

    ;-))
    1
  2. jee pee Messages postés 31865 Date d'inscription   Statut Modérateur Dernière intervention   9 973
     
    Bonjour,

    Une suggestion, en traitant le 1er répertoire tu fais un cd pour te positionner dedans, donc à cet endroit, le test -d pour le second dossier à traiter ne le trouve pas.

    1
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut JP,

      Grilled ;-))
      0
      1. jee pee Messages postés 31865 Date d'inscription   Statut Modérateur Dernière intervention   9 973 > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Salut ;-)
        0
  3. medou922 Messages postés 3 Statut Membre
     
    Meeeerciiii pour votre aide !!! ça fonctionne parfaitement :D
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      De rien.

      Au passage :
      find . -maxdepth 1 -type d -printf "%P\n"
      fait ce que tu veux sans passer par le shell ;-)
      0