在此question in the answer from Kyle Brandt,[[ ]]
构造被描述为“bash内置测试命令”。以下是一个例子。
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
为什么双方括号,字面上[[ ]]
是必要的?
答案 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概要需要它们
问题已经改变,所以我也回答了。
[[ ]]
用于[ ]
,因为您不必担心引用将作为变量读取的测试的左侧。
此外,<
和>
不需要转义