在这个question in the answer from Kyle Brandt这个[[ ]]
构造被描述为“bash内置测试命令”。以下示例为例。bash中双方括号的含义
if [[ ($a -gt 2) && ($a -lt 5) ]]; then ...
为什么需要双方括号,字面意思是[[ ]]
?
在这个question in the answer from Kyle Brandt这个[[ ]]
构造被描述为“bash内置测试命令”。以下示例为例。bash中双方括号的含义
if [[ ($a -gt 2) && ($a -lt 5) ]]; then ...
为什么需要双方括号,字面意思是[[ ]]
?
[[ ]]
等于test
关键字。
您还可以使用[ ]
但[[ ]]
并非与所有shell类型
对我来说兼容的,如果我没有理解问题的真正意义,问题本身没有很好地配制。
这些支架必须待在这里与其说是为了确定,但由于在bash大纲要求他们
问题发生变化,所以我的答案了。
[[ ]]
用于反对[ ]
,因为您不必担心引用将作为变量读取的测试的左侧。
此外,<
和>
不需要转义
[[是[在bash中更通用的版本]。
例如,使用[[]]测试结构,而不是可以防止脚本中的许多逻辑错误。例如,尽管在[]构造中给出了一个错误,但是在[[]]测试中可以使用& &,||,<和>运算符。
也,其实现方式是不同的
-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword
参考here一个很好的解释
它比这更糟; '[“$ this”>“$那个”]'不会给出错误,它只会做一些完全不同的事情。 (具体来说:它会将输出重定向到'$ this'指定的文件,然后测试'$ that'是否为非空白。) –
如果我可以用'[]',你说从来就没有理由使用'[[]] '。 – H2ONaCl
你是对的,操作的顺序与问题无关,所以我编辑了这个问题,删除了任何提及'()'确定操作的顺序。 – H2ONaCl
@broiyan:如果你不必担心可移植性,有人支持'[[]]'更好,因为你不必担心引用测试的左手边将被读为变量。此外,'<' and '>'不需要转义 – DonCallisto