bash中双方括号的含义

时间:2013-01-24 08:00:04

标签: bash

在此question in the answer from Kyle Brandt[[ ]]构造被描述为“bash内置测试命令”。以下是一个例子。

  if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...

为什么双方括号,字面上[[ ]]是必要的?

2 个答案:

答案 0 :(得分:8)

[[是一个更加多才多艺的版本[在bash中。

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

另外,他们的实现是不同的

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

请参阅here以获得更好的解释

答案 1 :(得分:2)

[[ ]]等于test关键字。

您也可以使用[ ],但[[ ]]与所有shell类型不兼容

对我而言,如果我理解真正的问题意识,问题本身就没有得到很好的表述 这些括号必须在这里不是为了确定订单,而是因为bash概要需要它们

修改

问题已经改变,所以我也回答了。

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