2018-02-05 17:22:04 +03:00
|
|
|
|
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>switch</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<h1>switch</h1>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда выполняет один из нескольких скриптов в зависимости
|
|
|
|
|
от полученного значения.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2>СИНТАКСИС</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2>ОПИСАНИЕ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда <strong>switch</strong> сравнивает аргумент <em>string</em> по
|
|
|
|
|
очереди с каждым из образцов, заданных аргументами
|
|
|
|
|
<em>pattern</em>. Если строка <em>string</em> соответствует
|
|
|
|
|
очередному образцу, выполняется соответствующий скрипт
|
|
|
|
|
<em>body</em> и команда возвращает результат его выполнения. Если
|
|
|
|
|
последний из образцов равен <em>default</em>, то ему соответствует
|
|
|
|
|
любая строка. Если строка не соответствует ни одному из образцов
|
|
|
|
|
(что значит, в частности, что образец <em>default</em>
|
|
|
|
|
отсутствует), то никакой скрипт не выполняется и команда
|
|
|
|
|
возвращает пустое значение. </p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Если один или несколько первых аргументов команды начинаются с
|
|
|
|
|
<strong>-</strong>, они считаются опциями команды. Возможные опции
|
|
|
|
|
перечислены ниже.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
|
|
|
|
|
<dt><strong>-exact</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Строка считается соответствующей образцу, только если она в точности
|
|
|
|
|
с ним совпадает. Этот режим используется по умолчанию.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-glob</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>При сравнении строки с образцом используются те же правила,
|
|
|
|
|
что и в команде <strong>string match</strong>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-regexp</strong><dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>При сравнении строки с образцом используются те же правила,
|
|
|
|
|
что и в команде <a href=regexp.html><strong>regexp</strong></a>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>--</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Обозначает конец опций. Следующий аргумент считается строкой
|
|
|
|
|
<em>string</em>, даже если он начинается с символа
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<strong>-</strong>.</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда предполагает использование одной из двух синтаксических
|
|
|
|
|
форм для задания образцов и скриптов. Первая использует
|
|
|
|
|
отдельные аргументы для каждого образца и скрипта. Эта форма
|
|
|
|
|
удобна при необходимости выполнить подстановки в образцах и/или
|
|
|
|
|
скриптах. Во второй форме все они помещаются в один аргумент,
|
|
|
|
|
который должен быть списком. Элементами этого списка должны
|
|
|
|
|
быть, соответственно, образцы и скрипты. Эта форма более удобна
|
|
|
|
|
для длинных команд, не размещающихся в одной строке, поскольку
|
|
|
|
|
она не требует использовать обратный слэш в конце каждой
|
|
|
|
|
строки. Но при ее использовании необходимо учитывать, что,
|
|
|
|
|
поскольку список содержится в фигурных скобках, подстановки
|
|
|
|
|
команд и переменных в образцах и скриптах не
|
|
|
|
|
производятся. Вследствие этого результат выполнения команды,
|
|
|
|
|
записанной в различных формах, может различаться.</p>
|
|
|
|
|
|
|
|
|
|
<p>Если один из аргументов <em>body</em> равен <strong>-</strong>, это
|
|
|
|
|
означает, что при совпадении строки с данным образцом будет
|
|
|
|
|
выполняться скрипт <em>body</em> для следующего образца. Если для
|
|
|
|
|
следующего образца скрипт также равен <strong>-</strong>, то будет
|
|
|
|
|
использован скрипт для следующего за ним образца и т.д.</p>
|
|
|
|
|
|
|
|
|
|
<p>Ниже приведены примеры использования команды
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<strong>switch</strong>.</p>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<pre>
|
|
|
|
|
switch abc a - b {format 1} abc {format 2} default {format 3}
|
|
|
|
|
</pre>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>вернет значение 2.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<pre>
|
|
|
|
|
switch -regexp aaab {
|
|
|
|
|
^a.*b$ -
|
|
|
|
|
b {format 1}
|
|
|
|
|
a* {format 2}
|
|
|
|
|
default {format 3}
|
|
|
|
|
}
|
|
|
|
|
</pre>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>вернет значение 1.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>А команда</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<pre>
|
|
|
|
|
switch xyz {
|
|
|
|
|
a
|
|
|
|
|
-
|
|
|
|
|
b
|
|
|
|
|
{format 1}
|
|
|
|
|
a*
|
|
|
|
|
{format 2}
|
|
|
|
|
default
|
|
|
|
|
{format 3}
|
|
|
|
|
}
|
|
|
|
|
</pre>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>вернет значение 3.<p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
|