Trong bash, được [[ $variable ]]
và [[ -n $variable ]]
hoàn toàn tương đương? Nó dường như là trường hợp đánh giá theo đầu ra bên dưới, nhưng tôi thấy cả hai hình thức sử dụng phổ biến trong các kịch bản 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 ]
cũng như vậy [ -n -n ]
. Trong các shell khác với zsh, các đối số lệnh (thậm chí dựng sẵn) hoặc các biến shell không thể chứa các ký tự NUL.
[[ -n $(echo -ne "\0") ]]; echo $?
và[ -n $(echo -ne "\0") ]; echo $?
khác nhau