unknown(3tcl)

NAME
unknown - 处理对使用不存在命令的尝试

总览 SYNOPSIS
unknown cmdName ?arg arg ...?

描述 DESCRIPTION

在一个脚本尝试调用一个不存在的命令的时候，Tcl 解释器将调用这个命令。unknown 的实现不是 Tcl 核心的一部分；但是在 Tcl 启动的时候，它是一个被缺省定义的库过程。你可以覆盖这个缺省的 unknown 来改变它的功能。

如果 Tcl 解释器遇到一个命令名而没有为它一个定义了的命令，则 Tcl 检查是否存在一个叫 unknown 的命令。如果没有这个命令，则解释器返回一个错误。如果unknown 命令存在，则调用它并加上由被完全替换过的名字组成的参数和给最初的不存在的命令的参数。典型的，unknown 命令做在库目录中查找名字是 cmdName 的一个命令过程，把缩写的命令名扩展成全长的名字，或自动的作为子进程执行未知命令等事情。在这些情况下(比如扩展缩写) unknown 将轻微的改变最初的命令，接着(重)执行它。unknown 命令的结果被用做最初的不存在的命令的结果。

unknown 的缺省实现的行为如下。它首先调用 auto_load 库过程来装载命令，接着它用最初的参数执行最初的命令。如果自动装载失败则 unknown 调用 auto_execok 来看是否有一个叫 cmd 的可执行文件。如果有，它调用 Tcl exec 命令并加上 cmd 和所有 args 作为参数。如果 cmd 不可自动执行，unknown 检查是否在顶层调用这个命令并在任何脚本的外部。如果是这样，则 unknown 进行两个额外的步骤。首先它参看 cmd 是否是下列三种形式之一: !!, !event, 或 ^old^new?^?。如果是这样，则 unknown 用与 csh 相同的方式对这些构造(construct)进行历史替换。最后，unknown 检查 cmd 是否是一个现存的 Tcl 命令的缩写。如果是，它扩展命令名并用最初的参数执行这个命令。如果上述努力都不能执行这个命令，unknown 返回一个错误。如果定义了全局变量 auto_noload ，则跳过自动装载步骤。如果定义了全局变量 auto_noexec，则跳过自动执行步骤。在通常的条件下，unknown 的返回值就是最终执行的命令的返回值。

参见 SEE ALSO
info(n), proc(n)

关键字 KEYWORDS
error, non-existent command

[中文版维护人]
寒蝉退士

[中文版最新更新]
2001/09/01

《中国 Linux 论坛 man 手册页翻译计划》:
http://cmpp.linuxforum.net