Toutes les affiches de parler de 0 pour être vrai et 1 fausse d'avoir manqué le point. Dans ce cas, 1 est vraie et 0 est faux dans l'habitude boolean sens en raison de l'arithmétique contexte de l'évaluation causée par $(())
.
L' ==
fonctionnement à l'intérieur de l' $(())
n'est pas l'égalité de retour statuts de Bash, il effectue numérique de l'égalité à l'aide de la littéraux de donnée où les "faux" et "vrai" sont traitées comme des variables, mais n'ont pas encore été lié, qui sont interprétés comme 0, car ils ont aucune valeur n'a encore été attribuée:
$ echo $((true))
0
$ echo $((false))
0
Si vous voulez comparer l'état de retour du vrai et du faux, vous voulez quelque chose comme:
true
TRUE=$?
false
FALSE=$?
if (( $TRUE == $FALSE )); then echo TRUE; else echo FALSE; fi
Mais, je ne suis pas sûr de savoir pourquoi vous voulez le faire.
EDIT: correction de la partie à l'origine, sur la réponse "vrai" et "faux" être interprétés comme des chaînes. Ils ne le sont pas. Ils sont traités comme des variables, mais n'ont pas de valeur lié à eux encore.