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.