В bash есть [[ $variable ]]
и [[ -n $variable ]]
полностью эквивалентны? Судя по приведенным ниже выводам, похоже, что это так, но я вижу, что обе формы использования преобладают в сценариях оболочки.
$ 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 ]
же самое [ -n -n ]
. В оболочках, отличных от zsh, аргументы команды (даже встроенные) или переменные оболочки не могут содержать символы NUL.
[[ -n $(echo -ne "\0") ]]; echo $?
и[ -n $(echo -ne "\0") ]; echo $?
отличаются