答案1
单括号是传统形式,通常作为外部命令实现。双括号是 bash(以及 ksh 和 zsh)扩展,是不是在 POSIX 中,并且具有更清晰的语法(见下文)并且不使用单独的进程的优点。
语法差异之一是<
and>
运算符(注意:不是标准 POSIX)不需要转义或引用以避免作为重定向运算符读取。此外,还[
需要一些技巧,以防其中一个字符串可能为空或以连字符开头。这就是为什么您会看到脚本执行类似的操作[ "x$ASD" == xValue ]
,而使用 bash 他们可以简单地使用[[ $ASD == Value ]]
.请注意,对于仅测试一件事的 POSIX 兼容命令来说,“x”技巧并不是严格必要的,请参阅这个问题了解更多详情。
bash 常见问题解答有关差异的更多信息。这也有已得到答复在另一个堆栈交换站点上。