用bash表示,[[ $variable ]]
并且[[ -n $variable ]]
完全等效吗?从下面的输出来看,似乎是这种情况,但是我看到两种用法都在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
@dchirikov,这是因为在第二个代码中,您忘了引用命令替换,因此最终结果是
—
斯特凡Chazelas
[ -n ]
相同[ -n -n ]
。在zsh以外的shell中,命令(甚至是内置参数)或shell变量不能包含NUL字符。
[[ -n $(echo -ne "\0") ]]; echo $?
和[ -n $(echo -ne "\0") ]; echo $?
不同