我什么时候应该在 Bash 中使用

我什么时候应该在 Bash 中使用

可能的重复:
使用单括号或双括号 - bash

什么时候应该使用单个支架?[

什么时候应该使用双括号?[[

两者都符合 POSIX 标准吗?

答案1

单括号是传统形式,通常作为外部命令实现。双括号是 bash(以及 ksh 和 zsh)扩展,是不是在 POSIX 中,并且具有更清晰的语法(见下文)并且不使用单独的进程的优点。

语法差异之一是<and>运算符(注意:不是标准 POSIX)不需要转义或引用以避免作为重定向运算符读取。此外,还[需要一些技巧,以防其中一个字符串可能为空或以连字符开头。这就是为什么您会看到脚本执行类似的操作[ "x$ASD" == xValue ],而使用 bash 他们可以简单地使用[[ $ASD == Value ]].请注意,对于仅测试一件事的 POSIX 兼容命令来说,“x”技巧并不是严格必要的,请参阅这个问题了解更多详情。

bash 常见问题解答有关差异的更多信息。这也有已得到答复在另一个堆栈交换站点上。

答案2

仅有的[( test)是在 POSIX 中。除了[[作为保留字实现可能会使用。 Bash 确实用作[[增强的测试操作符,如果您正在编写专门针对 的脚本bash,请始终使用它,[[因为它比它更强大[并且使用起来也更安全。但是,如果您的目标是 POSIX sh,则需要使用[,并确保引用参数并且不要使用超过 4 个参数[

相关内容