Bash 中的大括号和普通括号有什么区别?
仅供参考...我没有在相关问题列表中找到它,也无法在问题搜索中找到它。如果已经有人问过这个问题,请告诉我。
答案1
括号用于参数扩展(${foo%123}
),括号扩展可以是替代形式({foo,bar}
)或序列形式({1..25}
),也可以是代码块形式({ foo ; bar ; }
)。
方括号用作比较命令([ "$foo" -lt 3 ]
, [[ $bar =~ ^123 ]]
),用作 glob 中的范围或字符类(ba[rz]
, foo[[:alnum:]]
, qu[[=u=]]x
),用作数组赋值的一部分(foo=([2]=3 4 5)
, foo[42]=bar
),或在处理数组时用于参数扩展(${foo[@]}
)。
换句话说,它们是完全不同的。