2013-01-24 39 views

回答

2

[[ ]]等于test关键字。

您还可以使用[ ][[ ]]并非与所有shell类型

对我来说兼容的,如果我没有理解问题的真正意义,问题本身没有很好地配制。
这些支架必须待在这里与其说是为了确定,但由于在bash大纲要求他们

编辑

问题发生变化,所以我的答案了。

[[ ]]用于反对[ ],因为您不必担心引用将作为变量读取的测试的左侧。
此外,<>不需要转义

+0

如果我可以用'[]',你说从来就没有理由使用'[[]] '。 – H2ONaCl

+0

你是对的,操作的顺序与问题无关,所以我编辑了这个问题,删除了任何提及'()'确定操作的顺序。 – H2ONaCl

+0

@broiyan:如果你不必担心可移植性,有人支持'[[]]'更好,因为你不必担心引用测试的左手边将被读为变量。此外,'<' and '>'不需要转义 – DonCallisto

8

[[是[在bash中更通用的版本]。

例如,使用[[]]测试结构,而不是可以防止脚本中的许多逻辑错误。例如,尽管在[]构造中给出了一个错误,但是在[[]]测试中可以使用& &,||,<和>运算符。

也,其实现方式是不同的

-bash-3.2$ type [ 
[ is a shell builtin 
-bash-3.2$ type [[ 
[[ is a shell keyword 

参考here一个很好的解释

+2

它比这更糟; '[“$ this”>“$那个”]'不会给出错误,它只会做一些完全不同的事情。 (具体来说:它会将输出重定向到'$ this'指定的文件,然后测试'$ that'是否为非空白。) –