Bash中[[-n $ VAR]]和[[$ VAR]]之间的差异

Ste*_*ett 0 bash if-statement conditional-statements

Bash中这两个选项之间是否有区别:

# 1
if [[ "$VAR" ]]; then 

#2
if [[ -n "$VAR" ]]; then 
Run Code Online (Sandbox Code Playgroud)

如果没有,是否有真正需要-n选项的情况?

Ign*_*ams 5

由于[[test变量更聪明,因此基本上没有需要的情况-n.

$ foo=-n
$ [[ $foo ]] ; echo $?
0
$ [[ -n ]] ; echo $?
bash: unexpected argument `]]' to conditional unary operator
bash: syntax error near `]]'
$ foo="-z bar"
$ [[ $foo ]] ; echo $?
0
$ [ $foo ] ; echo $?
1
Run Code Online (Sandbox Code Playgroud)