我在使用Bash时,对于括号、圆括号和花括号的用法感到困惑,以及它们的双括号和单括号形式之间的区别。有没有清晰的解释?
在 Bash 中,test
和括号 [
是 shell 内置命令。在命令行里 test expr
和 [ expr ]
的效果相同。
双方括号 [[
是一个 shell 关键字,它启用了额外的功能。例如,你可以使用 &&
和 ||
代替 -a
和 -o
,并且还有一个正则表达式匹配运算符 =~
。
此外,在简单的测试中,双方括号的计算速度似乎比单方括号快得多。
花括号除了用来界定变量名外,还用于参数扩展,因此你可以执行以下操作:
•截断变量的内容
•进行类似于 sed 的替换
•使用默认值
•以及更多
此外,花括号扩展可以创建字符串列表,这些列表通常在循环中被迭代:
请注意,前导零和增量特性在 Bash 4 之前是不可用的。
双圆括号用于算术运算:
它们允许你在整数和数组变量前省略美元符号,并且可以在运算符周围添加空格以提高可读性。
如果双圆括号 ((...))
其中表达式的值非零,则返回 0(真),否则返回 1(假),所以:
圆括号用于创建子 shell。
此外,它们还用于创建数组。
•stackoverflow question 2188199•type [[