在Kyle Brandt 的回答中的这个问题上,该[[ ]]
构造被描述为“bash 内置测试命令”。以下作为示例显示。
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
为什么从字面上看,双方括号是[[ ]]
必要的?
在Kyle Brandt 的回答中的这个问题上,该[[ ]]
构造被描述为“bash 内置测试命令”。以下作为示例显示。
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
为什么从字面上看,双方括号是[[ ]]
必要的?
[[ 是 bash 中 [ 的更通用的版本。
例如,使用 [[ ... ]] 测试构造,而不是 [ ... ] 可以防止脚本中的许多逻辑错误。例如,&&、||、< 和 > 运算符在 [[ ]] 测试中工作,尽管在 [ ] 构造中给出错误。
此外,它们的实现方式也不同
-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword
参考这里以获得很好的解释
[[ ]]
等于test
关键字。
您也可以使用[ ]
但[[ ]]
不兼容所有 shell 类型
对我来说,如果我理解问题的真正意义,问题本身并没有很好地表述。
这些括号必须在这里不是为了确定订单,而是因为 bash 概要需要它们
问题变了,所以我的答案也变了。
[[ ]]
用于反对,[ ]
因为您不必担心引用将作为变量读取的测试的左侧。
而且,<
也不>
需要逃避