Salut !
Je travaille sur un petit projet en ce moment qui consiste à faire du "wrapping" de scripts shell.
Ce qui m'amène à travailler sur les codes retour de commandes.
Hors je me suis rendu compte d'un truc un peu étrange selon moi, une bête histoire de syntaxe.
Voici un petit script pour illustrer:
Et voilà ce que ça donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #!/bin/bash var=$(une_commande_qui_n_existe_pas 1>/dev/null 2>&1) echo -e 'var=$(une_commande_qui_n_existe_pas 1>/dev/null 2>&1) donne ce code retour: '$?"\n" function une_commande_qui_réussit { return 0; } var=$(une_commande_qui_réussit 1>/dev/null 2>&1) echo -e 'var=$(une_commande_qui_réussit 1>/dev/null 2>&1) donne ce code retour: '$?"\n" echo -e "--> Tout le monde est d'accord ? :-)\n" var=$(( 10 - 1 )) echo -e 'var=$(( 10 - 1 )) donne ce code retour: '$?"\n" var=$(( var = 10 - 1 )) echo -e 'var=$(( var = 10 - 1 )) donne ce code retour: '$?"\n" echo -e "--> Toujours d'accord ? :-)\n" var=$(( 1 - 1 )) echo -e 'var=$(( 1 - 1 )) donne ce code retour: '$?"\n" echo -e "--> Normal !\n" echo -e "OK, maintenant ça devient bizarre !\n" (( var = 1 - 1 )) echo -e '--> (( var = 1 - 1 )) donne ce code retour: '$?"\n"
En résumé:var=$(une_commande_qui_n_existe_pas 1>/dev/null 2>&1) donne ce code retour: 127
var=$(une_commande_qui_réussit 1>/dev/null 2>&1) donne ce code retour: 0
--> Tout le monde est d'accord ? :-)
var=$(( 10 - 1 )) donne ce code retour: 0
var=$(( var = 10 - 1 )) donne ce code retour: 0
--> Toujours d'accord ? :-)
var=$(( 1 - 1 )) donne ce code retour: 0
--> Normal !
OK, maintenant ça devient bizarre !
--> (( var = 1 - 1 )) donne ce code retour: 1
var=$(( 1 - 1 )) donne ce code retour: 0
Mais...
(( var = 1 - 1 )) donne ce code retour: 1
Ça me laisse songeur.
Partager