Forums FUG-FR | |
https://forums.fug-fr.org/cgi-bin/yabb2/YaBB.pl
Divers et varié >> Programmation >> Traitement des erreur ; script sh https://forums.fug-fr.org/cgi-bin/yabb2/YaBB.pl?num=1161795523 Message started by Marck on 25. Oct 2006 at 18:58 |
Title: Traitement des erreur ; script sh Post by Marck on 25. Oct 2006 at 18:58
Salut
Je n'ai jamais rien lu sur le traitement des erreurs dans les script sh mais, dans un tel script, peut-on traiter les éventuelles erreurs des commandes passées autrement qu'en surveillant "$?" après leur exécution ? Par exemple ici la fonction testerror arrête le script si fetch rencontre un problème: Code (]... testerror () { if [ $STOP != 0 ):
Bref à part surveiller "$?" je ne vois pas ce que je pourrais faire ? Merci, Marc |
Title: Re: Traitement des erreur ; script sh Post by idroxid on 25. Oct 2006 at 20:40
tu peux utiliser le code de retour de fetch.
|
Title: Re: Traitement des erreur ; script sh Post by Marck on 25. Oct 2006 at 21:18
Salut Idroxid
... mais le code de retour de fetch (ou d'une autre commande) n'est-ce pas justement le contenu de "?" soit "$?"... ??? Par exemple: http://lea-linux.org/cached/index/Dev-shell_script.html# Quote:
Ou alors tu parles d'autre chose que je ne connais pas, mais alors si tu pouvais être un peu plus précis :) Merci, Marc |
Title: Re: Traitement des erreur ; script sh Post by idroxid on 25. Oct 2006 at 21:48
Je suis nul à ch... en bash, mais tu te compliques la tâche.
if [ ! -f base.$i ] ; then echo "Telechargement du fichier base.$i" if [ ! fetch $FTP/base/base.$i]; then echo "" echo "==== ERREUR ====" echo "Une erreur de telechargement est survenue." echo "Veuillez verifier votre connexion et relancer ce script." exit 1 fi fi C'est du pseudo code, je ne garantis pas du tout la syntaxe: if [ ! fetch $FTP/base/base.$i]; then ... mais c'est là que tu testes le retour de fetch. |
Title: Re: Traitement des erreur ; script sh Post by Marck on 25. Oct 2006 at 22:25
OK c'est la même chose en plus condensé et donc plus élégant mais moins lisible pour moi.
En fait si je récupère $? dans une autre variable c'est pour parfois faire des tests plus complets et être sûr que le $? que je teste est toujours le bon et non celui d'une autre commande éventuellement passée entre temps (disons que plutôt que de m'en inquiéter comme cela je suis tranquille)... Par exemple dans un autre script de la série: Code (]... if [ ! -d livecd/var/db/pkg/$i* ):
Voilà voilà mais il est vrai que dans l'exemple précédent la variable STOP et la fonction testerror sont un peu "inutiles"... merci pour tes conseils. Marc |
Title: Re: Traitement des erreur ; script sh Post by francis on 26. Oct 2006 at 10:12
Si tu veux faire une fonction qui attrappe un peu toutes les erreurs, histoire de sortir proprement de ton script en cas de problème, tu peux aussi utiliser une construction comme:
[code]catastrof(){ echo "Y'a gros problème" blablabla... exit 1 } (...) ma_commande || catastrophe (...) [/code] soit: si le code de sortie de ma_commande n'est pas nul, alors catastrophe. |
Title: Re: Traitement des erreur ; script sh Post by Marck on 26. Oct 2006 at 12:09
OK merci Francis.
C'est vrai que je n'utilise pas beaucoup les "||" et "&&" comme une façon simple de savoir si tout c'est bien passé ou non et donc si l'on continue ou non. C'est pourtant simple et plus élégant que d'utiliser une variable supplémentatire style "STOP" du premier script. Je verrai cela dès que je reprendrai ces scripts. Marc |
Forums FUG-FR » Powered by YaBB 2.5.2! YaBB Forum Software © 2000-2025. All Rights Reserved. |