<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>unknown</title> </head> <body> <h1>unknown</h1> <p>Команда <strong>unknown</strong> обрабатывает попытки обратиться к несуществующей команде.</p> <h2>СИНТАКСИС</h2> <pre> <strong>unknown</strong> <em>cmdName</em> ?<em>arg</em> <em>arg</em>? </pre> <h2>ОПИСАНИЕ</h2> <p>Интерпретатор Tcl выполняет эту команду каждый раз, когда скрипт пытается обратиться к несуществующей команде. Исходный вариант <strong>unknown</strong> не является функцией ядра Tcl; напротив, это библиотечная процедура, определяемая по умолчанию при запуске Tcl. Разработчик может переопределить ее функциональность так, как ему нужно.</p> <p>Когда Tcl находит имя команды, которому не соответствует ни одной из существующих команд, тогда он проверяет наличие команды <strong>unknown</strong>. Если команды <strong>unknown</strong> нет, то он возвращает ошибку. Если такая команда обнаружена, то она будет вызвана с аргументами, состоящими из имени и аргументов исходной несуществующей команды, в которых выполнены все необходимые подстановки.</p> <p>Команда <strong>unknown</strong> обычно выполняет поиск по библиотечным каталогам процедуры с именем <em>cmdName</em>, или поиск полного имени команды, к которой обратились по сокращенному имени, или автоматический запуск неизвестной команды как подпроцесса. При успешном поиске полного имени команды команда <strong>unknown</strong> заменяет имя на полное и вызывает команду с полным именем. Результат работы команды <strong>unknown</strong> используется вместо результата неопределенной команды.</p> <p>Создаваемая по умолчанию процедура <strong>unknown</strong> выполняет следующие действия.</p> <p>Сначала она вызывает библиотечную процедуру <strong>auto_load</strong> чтобы найти и загрузить соответствующую процедуру. Если это удалось, то выполняется исходная команда с ее исходными аргументами.</p> <p>В противном случае вызывается процедура <strong>auto_execok</strong> чтобы найти исполняемый файл с именем <em>cmdName</em>. Если файл удалось найти, выполняется команда <a href= "exec.html"><strong>exec</strong></a> с именем команды и ее аргументами в качестве аргументов.</p> <p>В противном случае проверяется, была ли неизвестная команда вызвана на самом верхнем уровне вне какого-либо скрипта. Если это было так, процедура <strong>unknown</strong> выполняет следующие дополнительные действия: проверяется не имеет ли команда одну из следующих форм:<strong>!!</strong>, <strong>!</strong>event, или <strong>^</strong>old<strong>^</strong>new?<strong>^</strong>? и если да, то процедура unknown выполняет для них подстановки по тем же правилам, что и csh.</p> <p>И при неудаче всех предыдущих попыток процедура <strong>unknown</strong> проверяет, не является ли <em>cmdName</em> сокращением для известной Tcl процедуры. Если так, то <em>cmdName</em> заменяется на полное имя процедуры и она вызывается с исходными аргументами.</p> <p>Если же ни одна из попыток не привела к успеху, процедура возвращает ошибку.</p> <p>Если определена глобальная переменная <strong>auto_noload</strong>, попытка загрузить процедуру с помощью <strong>auto_load</strong> не производится.</p> <p>Если определена глобальная переменная <strong>auto_noexec</strong>, попытка загрузить процедуру с помощью <strong>auto_execok</strong> не производится.</p> <p>Если команду удалось найти, то процедура <strong>unknown</strong> возвращает результат выполнения найденной команды.</p> </body> </html>