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.
<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'erreur =C3=A0 son ex=C3=A9cuti=
on s'il vous plait ?<br><br></div>J'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>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
=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
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 <etienne.mollier@mailoo.org>
Shell programming is a 1950s juke box . . .
--Larry Wall
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