Problème avec un shell sous Unix
Super Sniper
-
Super Sniper -
Super Sniper -
Bonjour à tous,
J'ai besoin d'aide.
Voilà le truc, j'ai un répertoire en local (TOTO), dans ce répertoire j'ai un nombre inconnu de sous-répertoires (LOT1, LOT2, LOT3, ...).
Dans chacun de ces sous-répertoires, j'ai 2 fichiers (LOT et FEUILLE). Je dois faire un traitement pour mettre en relation chaque fichier FEUILLE avec son fichier LOT qui lui correspond (je fais ça en Cobol, pas de souci).
J'ai besoin de faire un script qui va me récupérer tous les noms des répertoires, et qui ensuite va aller dans chaque répertoire pour lancer mon batch Cobol pour le traitement.
Pour le moment j'ai réussi à récupérer tous les noms de tous les répertoires et à les mettre dans un fichier essai.txt avec la commande :
ls -l | grep dr | cut -f2 -d : | cut -f2 -d ' ' > $HOME/trf/essai.txt
Mon fichier essai.txt contient donc :
LOT1
LOT2
LOT3
Maintenant il faut que dans mon script shell je lise ce fichier essai.txt, et que à chaque ligne lue, j'aille dans le répertoire correspondant pour exécuter mon batch, et c'est là qu'est le problème, je ne sais pas comment faire.
Je suppose que j'ai besoin de faire une boucle pour la lecture, mais je ne sais pas comment coder ça (je débute dans l'écriture de shell)
Quelqu'un peut-il m'aider?
Merci d'avance.
J'ai besoin d'aide.
Voilà le truc, j'ai un répertoire en local (TOTO), dans ce répertoire j'ai un nombre inconnu de sous-répertoires (LOT1, LOT2, LOT3, ...).
Dans chacun de ces sous-répertoires, j'ai 2 fichiers (LOT et FEUILLE). Je dois faire un traitement pour mettre en relation chaque fichier FEUILLE avec son fichier LOT qui lui correspond (je fais ça en Cobol, pas de souci).
J'ai besoin de faire un script qui va me récupérer tous les noms des répertoires, et qui ensuite va aller dans chaque répertoire pour lancer mon batch Cobol pour le traitement.
Pour le moment j'ai réussi à récupérer tous les noms de tous les répertoires et à les mettre dans un fichier essai.txt avec la commande :
ls -l | grep dr | cut -f2 -d : | cut -f2 -d ' ' > $HOME/trf/essai.txt
Mon fichier essai.txt contient donc :
LOT1
LOT2
LOT3
Maintenant il faut que dans mon script shell je lise ce fichier essai.txt, et que à chaque ligne lue, j'aille dans le répertoire correspondant pour exécuter mon batch, et c'est là qu'est le problème, je ne sais pas comment faire.
Je suppose que j'ai besoin de faire une boucle pour la lecture, mais je ne sais pas comment coder ça (je débute dans l'écriture de shell)
Quelqu'un peut-il m'aider?
Merci d'avance.
A voir également:
- Problème avec un shell sous Unix
- Classic shell - Télécharger - Personnalisation
- Fichier executable unix ✓ - Forum MacOS
- Secure shell - Télécharger - Divers Web & Internet
- Unix scrabble ✓ - Forum loisirs/vie pratique
- Shell infrastructure host c'est quoi - Guide
10 réponses
J'avais déjà vu ça, mais je n'arrive pas à le faire marcher.
Lorsque j'utilise la boucle While telle qu'elle est marquée, mon fichier de sortie reste vide, et je ne comprend pas pourquoi.
Lorsque j'utilise la boucle While telle qu'elle est marquée, mon fichier de sortie reste vide, et je ne comprend pas pourquoi.
Affiche ton script (la boucle du moins, mais le script en entier serait un plus).
Si tu pouvais aussi afficher l'arborescence du(es) répertoire(s) et son(leurs) contenu(s) ce serait encore mieux, du moins une partie histoire qu'on saisisse bien ce que tu veux. Je dis ça parce que ton histoire de récupération de nom de répertoire dans un fichier, si je comprend bien ton problème, je suis sur qu'il y a moyen de faire plus simple et plus direct...
;-))
Si tu pouvais aussi afficher l'arborescence du(es) répertoire(s) et son(leurs) contenu(s) ce serait encore mieux, du moins une partie histoire qu'on saisisse bien ce que tu veux. Je dis ça parce que ton histoire de récupération de nom de répertoire dans un fichier, si je comprend bien ton problème, je suis sur qu'il y a moyen de faire plus simple et plus direct...
;-))
Le script (pour le moment je teste, donc j'en suis au départ):
#! /bin/bash
cd ../trf
ls -l | grep dr | cut -f2 -d : | cut -f2 -d ' ' > $HOME/trf/essai.txt
while read line
do
echo -e "$line\n"
done < essai.txt
--------------------------------------------------------------------------------
L'arborescence des répertoires :
répertoire racine : $HOME/trf
contenu de $HOME/trf
LOT1
LOT2
LOT3
Chaque répertoire LOT contient 2 fichiers : LOT.TXT et FEUILLE.TXT
J'ai donc :
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT1
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT2
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT3
Le but étant par la suite de faire un traitement batch, donc dans la boucle While, si elle fonctionne, à la place du echo, je ferais un appel à mon batch pour effectué le traitement.
Voilà, j'espère que ça suffira.
#! /bin/bash
cd ../trf
ls -l | grep dr | cut -f2 -d : | cut -f2 -d ' ' > $HOME/trf/essai.txt
while read line
do
echo -e "$line\n"
done < essai.txt
--------------------------------------------------------------------------------
L'arborescence des répertoires :
répertoire racine : $HOME/trf
contenu de $HOME/trf
LOT1
LOT2
LOT3
Chaque répertoire LOT contient 2 fichiers : LOT.TXT et FEUILLE.TXT
J'ai donc :
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT1
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT2
1 fichier LOT.TXT et un fichier FEUILLE.TXT dans le répertoire LOT3
Le but étant par la suite de faire un traitement batch, donc dans la boucle While, si elle fonctionne, à la place du echo, je ferais un appel à mon batch pour effectué le traitement.
Voilà, j'espère que ça suffira.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ton aide.
Ca ne marche pas comme il faudrait, mais mon "responsable" me dit de laisser tomber pour ne pas perdre trop de temps là-dessus.
Donc je laisse tomber.
Le sujet peut être cloturé. Merci quand même.
Ca ne marche pas comme il faudrait, mais mon "responsable" me dit de laisser tomber pour ne pas perdre trop de temps là-dessus.
Donc je laisse tomber.
Le sujet peut être cloturé. Merci quand même.
pour ne pas perdre trop de temps là-dessus.
C'est dommage, je pense que la solution ne doit pas être loin...
Donc je laisse tomber.
C'est ton choix et je me répète, c'est dommage.
Ca ne marche pas comme il faudrait
Allez, vite fait, en deux mots, c'est quoi qui marche pas ?
As-tu des erreurs ? Si oui affiches-les.
Mais non j'insiste pô ;-))
C'est dommage, je pense que la solution ne doit pas être loin...
Donc je laisse tomber.
C'est ton choix et je me répète, c'est dommage.
Ca ne marche pas comme il faudrait
Allez, vite fait, en deux mots, c'est quoi qui marche pas ?
As-tu des erreurs ? Si oui affiches-les.
Mais non j'insiste pô ;-))
Je suis bien d'accord avec toi, on est surement très prêt de la solution.
Si je laisse tomber, c'est que je n'ai pas le choix, je suis malheureusement payé pour éxecuter les ordres de mes chefs, et donc s'ils me disent : "Laisse tomber", je m'exécute.
Pour ce qui est des erreurs, je ne les ai malheureusement plus, on m'a dit de laisser tomber, donc j'ai arrêté là, mais de mémoire, en fait il trouvait "tous" les fichiers et dossiers, alors qu'il ne me fallait que les fichiers contenu dans les dossiers qui m'intéressaient, et donc après quand j'exécutais mon batch, il était perdu puisqu'il avait des trucs pas intéressants pour lui.
Voilà, Merci encore pour ton aide, je suis sûr qu'on aurait fini par y arriver, mais bon les chefs ont parlé, alors on exécute même si ça ne plaît pas ...
Si je laisse tomber, c'est que je n'ai pas le choix, je suis malheureusement payé pour éxecuter les ordres de mes chefs, et donc s'ils me disent : "Laisse tomber", je m'exécute.
Pour ce qui est des erreurs, je ne les ai malheureusement plus, on m'a dit de laisser tomber, donc j'ai arrêté là, mais de mémoire, en fait il trouvait "tous" les fichiers et dossiers, alors qu'il ne me fallait que les fichiers contenu dans les dossiers qui m'intéressaient, et donc après quand j'exécutais mon batch, il était perdu puisqu'il avait des trucs pas intéressants pour lui.
Voilà, Merci encore pour ton aide, je suis sûr qu'on aurait fini par y arriver, mais bon les chefs ont parlé, alors on exécute même si ça ne plaît pas ...
en fait il trouvait "tous" les fichiers et dossiers, alors qu'il ne me fallait que les fichiers contenu dans les dossiers qui m'intéressaient,
Bizarre ;-\
Avec l'option "-type f" il est sensé ne trouver que les fichiers et pas les répertoires...
mais bon les chefs ont parlé, alors on exécute même si ça ne plaît pas ...
;-))
Bon courage.
Bizarre ;-\
Avec l'option "-type f" il est sensé ne trouver que les fichiers et pas les répertoires...
mais bon les chefs ont parlé, alors on exécute même si ça ne plaît pas ...
;-))
Bon courage.