projman/hlp/ru/tcl/unknown.html
2015-10-19 14:27:31 +04:00

88 lines
3.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>