Bonjour,
je me heurte à un test du type
commande | egrep « une séquence »
Resultat="$?"
pour utiliser « $Resultat » comme argument conditionnel: un test
if [[ "$Resultat" = 0 ]] ;then ...
Ce test fonctionne s’il est réussi ( $? = 0 ), mais pas s’il a échoué: la valeur de retour du test grep échoué est absente alors que je m’attendais à ce qu’elle soit un entier positif, comme beaucoup de commandes.
Si le test est échoué, il renvoie la valeur nulle, mon test [[ « $Résultat » = 0 ]] renvoie vrai, comme si la variable vide/nulle valait zéro.
Mon test est donc nul, puisqu’il de différencie pas valeur nulle (vide) et valeur existante : 0.
Pourtant le man dit le contraire (exception si le paramètre -q / --quiet / ou --silence est passé à grep, ce qui n’est pas le cas de mon script):
EXIT STATUS
Normally the exit status is 0 if a line is selected, 1 if no lines were selected, and 2 if an error occurred. However, if
the -q or --quiet or --silent is used and a line is selected, the exit status is 0 even if an error occurred.
et grep --help confirme:
Exit status is 0 if any line (or file if -L) is selected, 1 otherwise;
if any error occurs and -q is not given, the exit status is 2.