On remarque que la condition des commandes if et while est une commande. Chaque commande renvoie un code de retour (qui est ignoré en utilisation normale). Si le code est 0, la commande a réussi; sinon, la commande a échoué. Par exemple, le compilateur cc renvoie un code d'erreur non nul si le fichier compilé contient des erreurs, ou s'il n'existe pas.
Les commandes if et while considèrent donc le code de retour 0 comme ``vrai'', et tout autre code comme ``faux''.
Il existe une commande test, qui évalue des expressions booléennes passées en argument, et renvoie un code de retour en fonction du résultat. Elle est bien utile pour les scripts. Exemple:
if test $var foo then echo 'La variable vaut foo' else echo 'La variable ne vaut pas foo' fi