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

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh