No bash, são [[ $variable ]]
e [[ -n $variable ]]
completamente equivalentes? Parece ser o caso a julgar pela saída abaixo, mas vejo as duas formas de uso predominantes nos scripts de shell.
$ z="abra"
$ [[ $z ]]
$ echo $?
0
$ [[ -n $z ]]
$ echo $?
0
$ z=""
$ [[ $z ]]
$ echo $?
1
$ [[ -n $z ]]
$ echo $?
1
$ unset z
$ [[ $z ]]
$ echo $?
1
$ [[ -n $z ]]
$ echo $?
1
[ -n ]
a mesma [ -n -n ]
. Em shells diferentes de zsh, os argumentos de comando (mesmo embutidos) ou variáveis de shell não podem conter caracteres NUL.
[[ -n $(echo -ne "\0") ]]; echo $?
e[ -n $(echo -ne "\0") ]; echo $?
diferem