我正在阅读 bash 示例,if但有些示例是用单方括号编写的:
if
if [ -f $param ] then #... fi
其他带双方括号的:
if [[ $? -ne 0 ]] then start looking for errors in yourlog fi
有什么区别?
Single[]是符合 posix shell 的条件测试。
[]
Double[[]]是标准的扩展,[]并且受到 bash 和其他 shell(例如 zsh、ksh)的支持。它们支持额外的操作(以及标准的 posix 操作)。例如:||而不是-o和正则表达式匹配=~。更完整的差异列表可以在bash 手册的条件结构部分中找到。
[[]]
||
-o
=~
[]每当您希望脚本可跨 shell 移植时使用。[[]]如果您想要不支持[]且不需要可移植的条件表达式,请使用此选项。