Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2007, 11h37   #1
Membre du Club
 
Inscription : mars 2002
Messages : 228
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 228
Points : 55
Points : 55
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 :
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[*]}
bleuerouge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 11h44   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Essaie avec REP="$(ls)" au lieu de REP="ls".
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 11h50   #3
Membre du Club
 
Inscription : mars 2002
Messages : 228
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 228
Points : 55
Points : 55
Citation:
Envoyé par _Mac_
Essaie avec REP="$(ls)" au lieu de REP="ls".
Non ça ne marche pas non plus
bleuerouge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h03   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
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)).
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h05   #5
Membre du Club
 
Inscription : mars 2002
Messages : 228
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 228
Points : 55
Points : 55
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 :
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
}
bleuerouge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h39   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Je sais pas : je ne connais pas bourn shell Faut pas faire un return $liste ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 16h11   #7
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 450
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 450
Points : 7 559
Points : 7 559
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 22h28   #8
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
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
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 10h52   #9
Membre éprouvé
 
Avatar de _shuriken_
 
Homme
Consultant telecoms
Inscription : mars 2006
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

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

Informations forums :
Inscription : mars 2006
Messages : 426
Points : 410
Points : 410
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.
__________________
"When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

Lord Kelvin - 1883.
_shuriken_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h40.


 
 
 
 
Partenaires

Hébergement Web