Shell > Contourner des Exit de sous procédure
Résolu
Zmon
-
Zmon Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Zmon Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je vais essayer d'expliquer le plus clairement possible ma problématique !
Je suis en train de développer un shell, disons qu'il s'appelle PROGPRINCIPAL.
Dans celui ci, je lance un autre shell : SOUSPROG
Ce dernier lance plusieurs autres shells : CALCUL1, CALCUL2 etc.
et après chacun de ces calculs il lance un shell : CONTROL.
Dans ce dernier shell (CONTROL), s'il y a eu une erreur, on fait un exit :
On a donc en résumé une arborescence de ce type :
> PROGPRINCIPAL
>> SOUSPROG
>>> CALCUL1
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
>>> CALCUL2
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
etc...
Le problème est le suivant :
J'aimerais, lorsqu'il y a un exit 1, que ça ne me fasse pas quitter toute la chaîne mais que ça me ramène dans le PROGPRINCIPAL (ou dans la chaîne SOUSPROG à la limite, tant que ça ne quitte pas toute la procédure) et pouvoir récupérer l'info disant qu'il y a eu une erreur, pour en définitive lancer un SOUSPROG2.
Donc si je reprend le schéma ci dessus
> PROGPRINCIPAL
>> SOUSPROG
>>> CALCUL1
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
>>> CALCUL2
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
etc...
>> S'il y a eu une erreur > SOUSPROG2
Si quelqu'un a une idée pour résoudre mon problème ce serait avec plaisir que je lirais votre réponse !! :)
Si ce n'est pas clair j'essayerais d'être plus précis.
D'avance merci, ne serait ce que pour avoir lu le problème !
Zmon
Je vais essayer d'expliquer le plus clairement possible ma problématique !
Je suis en train de développer un shell, disons qu'il s'appelle PROGPRINCIPAL.
Dans celui ci, je lance un autre shell : SOUSPROG
Ce dernier lance plusieurs autres shells : CALCUL1, CALCUL2 etc.
et après chacun de ces calculs il lance un shell : CONTROL.
Dans ce dernier shell (CONTROL), s'il y a eu une erreur, on fait un exit :
if [ $? = 0 ]
then
exit 1
fi
On a donc en résumé une arborescence de ce type :
> PROGPRINCIPAL
>> SOUSPROG
>>> CALCUL1
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
>>> CALCUL2
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
etc...
Le problème est le suivant :
J'aimerais, lorsqu'il y a un exit 1, que ça ne me fasse pas quitter toute la chaîne mais que ça me ramène dans le PROGPRINCIPAL (ou dans la chaîne SOUSPROG à la limite, tant que ça ne quitte pas toute la procédure) et pouvoir récupérer l'info disant qu'il y a eu une erreur, pour en définitive lancer un SOUSPROG2.
Donc si je reprend le schéma ci dessus
> PROGPRINCIPAL
>> SOUSPROG
>>> CALCUL1
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
>>> CALCUL2
>>> CONTROL
>>>> if [ $? = 0 ] then exit 1
etc...
>> S'il y a eu une erreur > SOUSPROG2
Si quelqu'un a une idée pour résoudre mon problème ce serait avec plaisir que je lirais votre réponse !! :)
Si ce n'est pas clair j'essayerais d'être plus précis.
D'avance merci, ne serait ce que pour avoir lu le problème !
Zmon
A voir également:
- Shell > Contourner des Exit de sous procédure
- Classic shell - Télécharger - Personnalisation
- Classic shell c'est quoi ✓ - Forum Windows 8 / 8.1
- Procédure de frigo vide - Forum Vos droits sur internet
- Exit discarding changes ✓ - Forum BIOS
- Contourner pub youtube - Accueil - Streaming
1 réponse
Salut,
Normalement la commande
Normalement la commande
returnen lieu et place de
exitdevrait faire le job ;-)
man bashpour plus de détails ou :
$ help return
return: return [n]
Termine depuis une fonction du shell.
Entraine l'arrêt d'une fonction ou d'un script sourcé, avec le code de retour spécifié par N.
Si N est omis, le code de retour est celui de la dernière commande exécutée
à l'intérieur de la fonction ou du script
Code de retour :
Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter une fonction ou un script.
Merci pour ta réponse.
Effectivement si ça ne tenait qu'à moi j'aurais remplacé les exit par des return dans le shell CONTROL, malheureusement je ne peux pas toucher aux shells autre que PROGPRINCIPAL.
J'aurais aimé savoir s'il existe une commande qui permet par exemple d'interdire l'exécution des "exit" aux shells fils qui seront lancés (et à leurs fils), ou une solution de ce genre, en ne touchant donc qu'à mon PROGPRINCIPAL.
Et si en plus de cela il existe une solution qui me permet quand même de savoir s'il y a eu une erreur dans les shells fils dans mon PROGPRINCIPAL, ce serait la perfection ! :)
plus précisément, PROGPRINCIPAL lance SOUSPROG, et ce dernier lance à la suite CALCUL1, CONTROL, CALCUL2, CONTROL etc.
Est-ce que le programme est sourcé ( ) ou simplement appelé ( ) ?
. chemin/CONTROL