据我所知,[[
是的增强版本[
,但是当我看到它[[
作为关键字并[
显示为内置函数时,我感到困惑。
[root@server ~]# type [
[ is a shell builtin
[root@server ~]# type [[
[[ is a shell keyword
TLDP说
内建函数可能是同名系统命令的同义词,但是Bash在内部重新实现它。例如,Bash echo命令与/ bin / echo不同,尽管它们的行为几乎相同。
和
关键字是保留字,令牌或运算符。关键字对shell具有特殊的含义,并且确实是shell语法的组成部分。举例来说,for和while都做!是关键字。类似于内置命令,关键字被硬编码到Bash中,但是与内置命令不同,关键字本身不是命令,而是命令构造的子单元。[2]
那不是既可以作为关键字[
又可以[[
作为关键字吗?我在这里想念什么吗?同样,此链接再次确认[
和[[
应该属于同一种类。
if "[" $x -eq 3 ]
按预期工作(因为猛砸查找称为命令[
,并存在),但if "[[" $x -eq 3 ]]
它不能正常工作(因为再次猛砸搜索相应的名称的命令,但没有[[
命令)。