Réponses:
Vous obtenez 0 ou 1. Dans le code de sortie.
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
Mise à jour : pour stocker le code de sortie pour une utilisation ultérieure, affectez-le simplement à une variable:
bash-4.2$ test 4 -lt 6
bash-4.2$ first=$?
bash-4.2$ test 4 -gt 6
bash-4.2$ second=$?
bash-4.2$ echo "first test gave $first and the second $second"
first test gave 0 and the second 1
$?variable - au moins jusqu'à ce qu'il soit remplacé par la prochaine commande que vous exécutez.
$PIPESTATUStableau pour obtenir le résultat de plusieurs commandes dans un pipeline. $?sera par conséquent le résultat de la dernière commande du pipeline si l' pipefailoption est désactivée (par défaut).
if test 4 -lt 6; then echo test succeeeded; else echo test failed; fi
Si vous voulez le résultat d'une comparaison sur la sortie standard au lieu d'un code de sortie, vous pouvez utiliser la expr(1)commande:
$ expr 4 '<=' 6
1
Deux choses à noter:
test. testrenvoie 0 pour vrai (qui est la norme pour les codes de sortie), mais exprimprime 1 pour vrai.testshell intégré, qui est considérablement plus rapide (environ 50 fois sur ma machine) que les exécutables testet exprdu package coreutils .