En fait, ce qui aurait été vraiment super, c'est que tu trouves tout seul pourquoi dans ton while test $if_cups != o -a $if_cups != n ça ne mache pas si "if_cups" n'a pas été initialisé (ou bien su tu appuies sur "entrée" sans répondre à la question)
=> dans ce cas là, le shell voit
test != o -a != n
et là, il apprécie pas du tout. Pour lui, la commande "test" avec l'opérateur "!=" doit avoir 2 opérandes, un situé avant et un après. Et là, il n'y a pas d'opérande avant => test:= unary operator expected => il attend un opérateur s'appliquant sur un seul opérande puisqu'il n'en voit qu'un.
Dans cette syntaxe: test "$if_cups" != "o" -a "$if_cups" != "n", si la variable "if_cups" est vide ou n'existe pas, le shell voit
test "" != "o" -a "" != "n" => il y a bien ce qu'il faut en opérandes => sa logique est satisfaite => ça fonctionne
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.