小编典典

Bash中单方括号和双方括号的区别

all

我正在阅读 bash 示例,if但有些示例是用单方括号编写的:

if [ -f $param ]
then
  #...
fi

其他带双方括号的:

if [[ $? -ne 0 ]]
then
    start looking for errors in yourlog
fi

有什么区别?


阅读 76

收藏
2022-06-29

共1个答案

小编典典

Single[]是符合 posix shell 的条件测试。

Double[[]]是标准的扩展,[]并且受到 bash 和其他 shell(例如 zsh、ksh)的支持。它们支持额外的操作(以及标准的
posix 操作)。例如:||而不是-o和正则表达式匹配=~。更完整的差异列表可以在bash
手册的条件结构部分
中找到。

[]每当您希望脚本可跨 shell 移植时使用。[[]]如果您想要不支持[]且不需要可移植的条件表达式,请使用此选项。

2022-06-29