In bash, sono [[ $variable ]]
e [[ -n $variable ]]
completamente equivalenti? Sembra essere il caso a giudicare dall'output di seguito, ma vedo entrambe le forme di utilizzo prevalenti negli script di 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 ]
la stessa [ -n -n ]
. Nelle shell diverse da zsh, gli argomenti di comando (anche incorporati) o le variabili di shell non possono contenere caratteri NUL.
[[ -n $(echo -ne "\0") ]]; echo $?
e[ -n $(echo -ne "\0") ]; echo $?
differiscono