IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

liste les repertoires dans tableau


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Par défaut liste les repertoires dans tableau
    Bonjour à tous,
    J'ai développé ce script qui me permet de ranger les noms des repertoires contenu à l'interieur du repertoire courrant dans un tableau indexé. Hors celui-ci n'a pas l'air de fonctionner puisque l'affichage est toujours vide...

    Pouvez vus m'aider svp

    Merci d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    # liste tout les repertoire et les place dans un tableau
    liste_rep ()
    {
    	let compteur=1 # declaration du compteur
    	declare -a liste # declaration de la variable tableau 
    	REP="ls"
    	for FICHIER in REP # Parser le répertoire
    	do
    	if [ -d $FICHIER ] # Si l'occurence est un repertoire
    	then
    		$liste{compteur}=$FICHIER # Alors l'ajouter à la liste
    		compteur ++ # Incrémenter le compteur
    	fi
    	done
     
    	return $liste # Retourner le compteur
    }
     
    result= liste_rep
    echo ${result[*]}

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Essaie avec REP="$(ls)" au lieu de REP="ls".

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Par défaut
    Citation Envoyé par _Mac_
    Essaie avec REP="$(ls)" au lieu de REP="ls".
    Non ça ne marche pas non plus

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Sinon, essaie avec REP=`ls`.

    Ce que tu peux faire, c'est un echo $REP juste en dessous pour vérifier qu'il récupère bien le contenu du répertoire.

    Tu es avec quel shell ? J'ai des doutes sur le "compteur ++" et "result= liste_rep" (l'espace après le = et j'aurais mis result=`liste_rep` ou result=$(liste_rep)).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Par défaut
    Je suis en bourne shell, j'ai modifié le script comme-ci dessous, seulement j'ai une erreur de type : numeric argument réquired. Peut on retourner un tableau avec une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    liste_rep ()
    {
    	compteur=1 # declaration du compteur
    	declare -a liste # declaration de la variable tableau 
     
    	for FICHIER in ls # Parser le répertoire
    	do
    	if [ -d $FICHIER ] # Si l'occurence est un repertoire
    	then
    		liste[$compteur]=$FICHIER # Alors l'ajouter à la liste
    		compteur=$(($compteur+1)) # Incrémenter le compteur
    	fi
    	done
     
    	return liste # Retourner le compteur
    }

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Je sais pas : je ne connais pas bourn shell Faut pas faire un return $liste ?

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    La valeur de retour d'une fonction shell est toujours une valeur numérique.
    Si tu veux une fonction qui retourne une chaîne, affiche cette chaîne dans la fonction et récupère l'affichage dans le shell appelant.
    Si tu veux une fonction qui retourne un tableau, tu peux soit afficher des lignes à prendre en compte comme les éléments du tableau, soit mettre à jour une variable tableau dans ta fonction...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Au passage, dans ta boucle FOR, il faut mettre des backquotes autour de la commande a exécuter!

    Ce qui donne Il les faut pour que le shell interprète ta commande

    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  9. #9
    Membre éclairé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Par défaut
    Donc si je comprends bien, ton script positionne dans un tableau les noms des répertoires à partir du rép courant avec bien entendu 1 compteur qui s'incremente automatiquement à chaque rép trouver?!!! .
    Je connais pas bien le Bourne Shell, mais je penses que les autres ont raison, révérifie ta syntaxe, ls est une commande et elle doit être utiliser comme ceci for FICHIER in `ls`.
    Sinon la philosophie du script est correct.

Discussions similaires

  1. listing des repertoires dans un combobox
    Par thewarior dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/10/2014, 09h48
  2. Cherche Script : lister repertoire dans tableau html
    Par julos08 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/07/2008, 01h14
  3. Script qui liste les repertoires donnant des liens sur les fichiers
    Par PsYKrO dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 22
    Dernier message: 27/03/2008, 08h46
  4. Réponses: 4
    Dernier message: 08/09/2006, 13h17
  5. Réponses: 3
    Dernier message: 26/08/2006, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo