Quando sua variável está vazia, seu comando se torna:
[ -e ]
Nesse caso, você chama [..]
com um argumento -e
. A string "-e"
não é nula, portanto, test
retorna true.
Esse comportamento é definido pelo teste POSIX :
In the following list, $1, $2, $3, and $4 represent the arguments presented to test:
0 arguments:
Exit false (1).
1 argument:
Exit true (0) if $1 is not null; otherwise, exit false.
....
Para que funcione, você deve aspas duplas sua variável :
[ -e "$MYAPPPATH" ]
Isso funciona porque -e
com um argumento que é uma string vazia é falso.