Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] exemple de bash avec des controles d'erreur

1 réponse
Avatar
David Martin
--f403043885e8ca15840559b44835
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Bonjour,

Je ne sais pas faire, et je me demandais si vous aviez un exemple de script
=C3=A0 me montrer qui fait du controle d'erreur =C3=A0 son ex=C3=A9cution s=
'il vous plait ?

J'ai trouv=C3=A9 un post sur le net, mais avec un exemple =C3=A7a irai peut=
etre
mieux.

;-)

Je prends vos conseils sinon

--=20
david martin

--f403043885e8ca15840559b44835
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div><div>Bonjour,<br><br></div>Je ne sais =
pas faire, et je me demandais si vous aviez un exemple de script<br></div>=
=C3=A0 me montrer qui fait du controle d&#39;erreur =C3=A0 son ex=C3=A9cuti=
on s&#39;il vous plait ?<br><br></div>J&#39;ai trouv=C3=A9 un post sur le n=
et, mais avec un exemple =C3=A7a irai peut etre mieux.<br><br></div>;-)<br>=
<br></div>Je prends vos conseils sinon<br clear=3D"all"><div><div><div><div=
><div><div><br>-- <br><div class=3D"gmail_signature" data-smartmail=3D"gmai=
l_signature"><div dir=3D"ltr">david martin<div><br></div></div></div>
</div></div></div></div></div></div></div>

--f403043885e8ca15840559b44835--

1 réponse

Avatar
=c3
On 09/21/2017 04:55 PM, David Martin wrote:
Bonjour,
Je ne sais pas faire, et je me demandais si vous aviez un exemple de script
à me montrer qui fait du controle d'erreur à son exécution s'il vous plait ?
J'ai trouvé un post sur le net, mais avec un exemple ça irai peut etre mieux.
;-)
Je prends vos conseils sinon

Bonsoir David,
Une méthode assez simple et efficace pour limiter la casse en cas
d'erreur avec Bash consiste tout simplement exécuter les scripts
avec l'option "-e". Vous pouvez commencer n'importe quel script
Bash comme suit :
#!/bin/bash
set -e
Dès l'instant où une commande du script renvoie un code d'erreur,
soit une valeur différente de 0 (qui peut être consultée via la
variable $? après exécution d'une commande), le script s'arrête
en renvoyant lui-même ce code d'erreur.
Ceci reste vrai tant que le script n'a pas prévu un traitement de
l'erreur pour une commande donnée. Pour traiter un tel cas
d'erreur vous avez plusieurs options :
1. Exécutez la commande dans un bloc "if". Si la commande
réussit, le bloc "then" est exécutée, si elle échoue, le bloc
"else" est exécuté, puis le script continue. Par exemple :
if
grep color .bashrc
then
echo "OK"
else
echo "KO"
fi
affichera "OK" si la chaine "color" apparaît dans le fichier
".bashrc", "KO" sinon.
2. Si c'est juste pour empêcher une commande de planter le script
en cas d'erreur, vous pouvez utiliser l'opérateur "||"
vaguement inspiré du C, pour lequel la seconde opérande est
exécutée si la première échoue, puis le script continue :
grep color .bashrc || echo "KO"
3. Couper l'option "-e" en ajoutant au moment voulu dans le
script :
set +e
mais comme c'est triste, il ne faut pas oublier de rétablir
l'option une fois la section problématique passée. Ça peut
servir si vous avez de nombreux traitements dans un bloc
"case" traitant différentes erreurs stockées dans $? par
exemple :
set +e
grep color .bashrc
case $? in
0 ) echo "No problem" ;;
1 ) echo "No color in there" ;;
2 ) echo "No .bashrc in there" ;;
* ) echo "Unknown error" ;;
esac
set -e
Vous pouvez consulter le code de retour dans une session
interactive comme suit :
$ grep color .bashrc
alias ls='ls --color=auto'
$ echo $?
0
$ grep colour .bashrc
$ echo $?
1
Étant donné le nombre de possibilités de Bash, je suis à peu près
certain d'avoir oublié un certain nombre de manières de traiter
les erreurs, mais ça devrait vous donner la base pour travailler.
Tous les détails du Bash sont disponibles dans sa page de manuel,
mais vous pouvez aussi consulter l'aide des différents "builtins"
avec la commande "help" :
$ help function
function: function name { COMMANDS ; } or name () { COMMANDS ; }
Define shell function.
[...]
$ man bash
Cette aide est disponible en Français si vous avez installé votre
système avec cette langue par défaut.
Si vous êtes anglophone et que vous avez du temps, l'excellent
« Advanced Bash-Scripting Guide » de Mendel Cooper permet d'être
très au point sur la rédaction de scripts shell. Il est
librement disponible ici :
http://tldp.org/LDP/abs/html/
On dirait qu'une traduction Française est aussi disponible :
https://abs.traduc.org/abs-6.4.05-fr/
J'ai beaucoup appris avec ce livre. :)
À plus,
--
Étienne Mollier
Shell programming is a 1950s juke box . . .
--Larry Wall