Sim, isso é um comportamento esperado. Quando apenas um argumento é passado para test , uma verificação de comprimento é executada. De man bash :
test and [ evaluate conditional expressions using a set of rules based on the number of arguments.
0 arguments: The expression is false.
1 argument: The expression is true if and only if the argument is not null.
Ou seja, essencialmente, é o equivalente de test foo , mas usando -n como a string.