projman/hlp/ru/tcl/switch.html
2018-02-05 17:23:37 +03:00

118 lines
5.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>switch</title>
</head>
<body>
<h1>switch</h1>
<p>Команда выполняет один из нескольких скриптов в зависимости
от полученного значения.</p>
<h2>СИНТАКСИС</h2>
<pre>
<strong>switch</strong> ?<em>options</em>? <em>string</em> <em>pattern</em> <em>body</em> ?<em>pattern</em> <em>body</em>...?
<strong>switch</strong> ?<em>options</em>? <em>string</em> {<em>pattern</em> <em>body</em> ?<em>pattern</em> <em>body</em>...?}
</pre>
<h2>ОПИСАНИЕ</h2>
<p>Команда <strong>switch</strong> сравнивает аргумент <em>string</em> по
очереди с каждым из образцов, заданных аргументами
<em>pattern</em>. Если строка <em>string</em> соответствует
очередному образцу, выполняется соответствующий скрипт
<em>body</em> и команда возвращает результат его выполнения. Если
последний из образцов равен <em>default</em>, то ему соответствует
любая строка. Если строка не соответствует ни одному из образцов
(что значит, в частности, что образец <em>default</em>
отсутствует), то никакой скрипт не выполняется и команда
возвращает пустое значение. </p>
<p>Если один или несколько первых аргументов команды начинаются с
<strong>-</strong>, они считаются опциями команды. Возможные опции
перечислены ниже.</p>
<dl>
<dt><strong>-exact</strong></dt>
<dd>Строка считается соответствующей образцу, только если она в точности
с ним совпадает. Этот режим используется по умолчанию.</dd>
<dt><strong>-glob</strong></dt>
<dd>При сравнении строки с образцом используются те же правила,
что и в команде <strong>string match</strong>.</dd>
<dt><strong>-regexp</strong><dt>
<dd>При сравнении строки с образцом используются те же правила,
что и в команде <a href=regexp.html><strong>regexp</strong></a>.</dd>
<dt><strong>--</strong></dt>
<dd>Обозначает конец опций. Следующий аргумент считается строкой
<em>string</em>, даже если он начинается с символа
<strong>-</strong>.</dd>
</dl>
<p>Команда предполагает использование одной из двух синтаксических
форм для задания образцов и скриптов. Первая использует
отдельные аргументы для каждого образца и скрипта. Эта форма
удобна при необходимости выполнить подстановки в образцах и/или
скриптах. Во второй форме все они помещаются в один аргумент,
который должен быть списком. Элементами этого списка должны
быть, соответственно, образцы и скрипты. Эта форма более удобна
для длинных команд, не размещающихся в одной строке, поскольку
она не требует использовать обратный слэш в конце каждой
строки. Но при ее использовании необходимо учитывать, что,
поскольку список содержится в фигурных скобках, подстановки
команд и переменных в образцах и скриптах не
производятся. Вследствие этого результат выполнения команды,
записанной в различных формах, может различаться.</p>
<p>Если один из аргументов <em>body</em> равен <strong>-</strong>, это
означает, что при совпадении строки с данным образцом будет
выполняться скрипт <em>body</em> для следующего образца. Если для
следующего образца скрипт также равен <strong>-</strong>, то будет
использован скрипт для следующего за ним образца и т.д.</p>
<p>Ниже приведены примеры использования команды
<strong>switch</strong>.</p>
<p>Команда</p>
<pre>
switch abc a - b {format 1} abc {format 2} default {format 3}
</pre>
<p>вернет значение 2.</p>
<p>Команда</p>
<pre>
switch -regexp aaab {
^a.*b$ -
b {format 1}
a* {format 2}
default {format 3}
}
</pre>
<p>вернет значение 1.</p>
<p>А команда</p>
<pre>
switch xyz {
a
-
b
{format 1}
a*
{format 2}
default
{format 3}
}
</pre>
<p>вернет значение 3.<p>
</body>
</html>