Traitement des erreurs dans un script bash

Post Reply
Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Traitement des erreurs dans un script bash

#1 Post by musher0 »

Bonjour.

J'ai créé un script que j'essaie de rendre le plus étanche possible (foolproof, en anglais... Le traducteur est en congé aujourd'hui ! 8) ).

On trouve dans le .xinitrc de BK, par exemple :
Si fbpanel existe, lancer fbpanel.

Code: Select all

[ -e fbpanel ] && fbpanel
Certains recommandent de placer ceci comme 1ère ligne de script

Code: Select all

#!/bin/bash -ex
Source : http://www.turnkeylinux.org/blog/shell-error-handling
Pas essayé, par contre. Je ne sais pas ce que ça vaut...

Dans DOS, on avait les errorlevel. Par ex.
Si errorlevel 1, faire telle chose
Si errorlevel 2, sortir du script
Si errorlevel 3, lancer script no 2
etc., etc.
Ça pouvait servir de condition ou d'aiguillage, mais ça renseignait aussi sur ce qui n'allait pas dans le fichier de séquence (batch file).

On a rien comme ça dans bash, hein? Ça serait diablement commode.

Merci d'avance.

musher0
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Argolance
Posts: 3767
Joined: Sun 06 Jan 2008, 22:57
Location: PORT-BRILLET (Mayenne - France)
Contact:

#2 Post by Argolance »

Hello musher0,
On a rien comme ça dans bash, hein? Ça serait diablement commode.
Peut-être que je réponds à côté mais le fichier /tmp/xerrs.log signale tout ce qui ne va pas lors de l’exécution d'un fichier batch. Les erreurs peuvent aussi être contrôlées si on le lance en console.
J'ai perso pris l'habitude de mettre quelques lignes en début de script ou dans un script préliminaire portant le nom du script, lui-même renommé en "script.sh" qui vérifie si l'application n'est pas déjà en cours d'exécution et ouvre une petite fenêtre pour avertir l'utilisateur.
Pour pmount par exemple:

Code: Select all

#!/bin/sh

if [ "`pidof gtkdialog_pmount`" = "" ]; then #si pmount n'est pas en cours d'utilisation alors...
exec /usr/sbin/pmount.sh &
else #sinon... Là on pourrait afficher un message d'avertissement. Dans le cas présent l'application est fermée si elle est déjà en cours d’exécution puis relancée, ce qui a pour effet de rafraichir la liste des périphériques internes ou externes présents sur la machine)
killall gtkdialog_pmount 2>/dev/null
exec /usr/sbin/pmount.sh &
fi
exit
Cordialement.
Attachments
212830_295x94_easyshot.jpg
(5.46 KiB) Downloaded 161 times

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#3 Post by musher0 »

Salut, argolance.

Merci.

Ton script est intéressant et intelligent :), mais je cherche quelque chose qui "dirait" un numéro ou un code explicatif sur l'exécution d'un script après. Ainsi, dans le script même, on pourrait récupérer ce numéro (disons, 85, ou 123, peu importe) et faire faire quelque chose d'autre au script afin de compenser l'erreur. Je savais faire ça dans DOS, mais dans bash je ne trouve rien d'approchant.

J'suis dans les hautes sphères, hein ? :oops:

A+

musher0
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply