在Kyle Brandt的答案中,这个[[ ]]结构被描述为"bash内置测试命令".以下是一个例子.
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
Run Code Online (Sandbox Code Playgroud)
为什么双字括号在字面上是[[ ]]必要的?
[[是一个更加多才多艺的版本[在bash中.
例如,使用[[...]]测试构造而不是[...]可以防止脚本中的许多逻辑错误.例如,尽管在[]构造中给出了错误,但&&,||,<和>运算符在[[]]测试中工作.
而且,他们的实现是不同的
-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword
Run Code Online (Sandbox Code Playgroud)
请参阅此处以获得更好的解释
[[ ]]等于test关键字。
您也可以使用[ ]但[[ ]]不兼容所有 shell 类型
对我来说,如果我理解问题的真正含义,问题本身就没有得到很好的阐述。
这些括号必须放在这里,并不是为了确定顺序,而是因为 bash 概要需要它们
问题变了,所以我的答案也变了。
[[ ]]使用 against 是[ ]因为您不必担心引用将被读取为变量的测试的左侧。
而且,<也不>需要转义