In der bash sind [[ $variable ]]
und [[ -n $variable ]]
völlig gleichwertig? Nach der folgenden Ausgabe scheint dies der Fall zu sein, aber ich sehe beide Verwendungsformen in Shell-Skripten.
$ 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 ]
dieselbe war [ -n -n ]
. In anderen Shells als zsh dürfen Befehlsargumente (auch integrierte Argumente) oder Shell-Variablen keine NUL-Zeichen enthalten.
[[ -n $(echo -ne "\0") ]]; echo $?
und[ -n $(echo -ne "\0") ]; echo $?
unterscheiden sich