Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Страницы справочного руководства ОС UNIX на русском


Информационный Канал Subscribe.Ru Новый модный поиск - www.lycos.ru

Выпуск 40

man bash(1), часть третья

Уважаемые подписчики! Этот (юбилейный) выпуск - третий в серии, посвященной командному интерпретатору bash. Перевод сделан сегодня, 12 апреля, по справочному руководству ОС Solaris 8.

Поскольку по правилам оформления рассылок в них не должно быть "висящих" гиперссылок, не все перекрестные ссылки в выпусках, посвященных bash, оформлены как гиперссылки. Когда перевод будет закончен, вы сможете скачать с сайта рассылки всю страницу в целом, со всеми необходимыми перекрестными и внешними ссылками.

Что почитать

Вышел апрельский выпуск ежемесячной колонки Ask Shadowman на сайте RedHat - якобы ответы на самые сложные технические вопросы по RedHat Linux. Оцените и решите для себя, стоит ли это читать...


bash(1)

КОММЕНТАРИИ

В неинтерактивном командном интерпретаторе или в интерактивном с включенной опцией interactive_comments встроенной команды shopt (см. раздел "ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже), слово, начинающиеся символом #, влечет игнорирование этого слова и последующих символов в строке. Интерактивный командный интерпретатор с не включенной опцией interactive_comments не допускает использования комментариев. Опция interactive_comments по умолчанию включается в интерактивных командных интерпретаторах.

МАСКИРОВКА

Маскировка (quoting) используется для отмены специального значения для командного интерпретатора определенных символов или слов. Маскировку можно использовать для отмены специфической обработки специальных символов, для предотвращения распознавания зарезервированных слов, а также для предотвращения подстановки параметров.

Каждый из метасимволов, перечисленных выше в разделе "ОПРЕДЕЛЕНИЯ", имеет специальное значение для командного интерпретатора и должен маскироваться, если используется буквально. Имеется три механизма маскировки: символ маскировки (escape character), одиночные кавычки и двойные кавычки.

Незамаскированная обратная косая черта (\) является символом маскировки. Он требует использовать следующий за ним символ (за исключением перевода строки) буквально. Если введена пара символов \<перевод строки> и сама обратная косая не замаскирована, эта пара обрабатывается как признак продолжения строки (т.е. она удаляется из входного потока и, по сути, игнорируется).

Все символы в одиночных кавычках используются буквально. Символ одиночной кавычки (апостроф) не должен указываться между одиночными кавычками, даже если он предваряется обратной косой.

Символы в двойных кавычках используются буквально, за исключением символов $, ` и \. Символы $ и ` в двойных кавычках имеют то же специальное значение. Обратная косая имеет специальное значение только если после нее идет один из следующих символов: $, `, ", \ или <перевод строки>. Двойную кавычку можно указывать в двойных кавычках, замаскировав обратной косой.

Специальные параметры * и @ имеют специальное значение при указании в двойных кавычках (см. раздел "ПАРАМЕТРЫ" ниже).

Слова вида $'строка' обрабатываются особым образомy. Слово заменяется строкой, в которой предваренные обратной косой символы заменяются в соответствии со стандартом ANSI C. Управляющие последовательности, начинающиеся с обратной косой, декодируются следующим образом:

\a тревога (звонок)
\b забой
\e управляющий символ
\f прогон страницы (form feed)
\n перевод строки (new line)
\r carriage return (возврат каретки)
\t табуляция
\v вертикальная табудяция
\\ обратная косая
\nnn символ, ASCII-код которого совпадает с восьмеричным значением nnn (от одной до трех цифр)
\xnnn символ, ASCII-код которого совпадает с шестнадцатеричным значением nnn (от одной до трех цифр)

Преобразованный результат помещается в одиночные кавычки, как если бы символа доллара просто не было.

Строка в двойных кавычках, перед которой идет символ доллара ($), будет преобразована в соответствии с текущей локалью. Если текущая локаль - C или POSIX, символ доллара игнориурется. Если строка преобразована м замена, результат помещается в двойные кавычки.

ПАРАМЕТРЫ

Параметр - это сущность, хранящая значение. Это может быть имя, число или один из специальных символов, перечисленных ниже в разделе "Специальные параметры". В контексте интерпретатора, переменная - это параметр, обозначаемый именем.

Параметр устанавливается, если ему присвоено значение. Пустая строка является допустимым значением. После того, как переменная установлена, она может быть удалена только с помощью встроенной команды unset (см. раздел "ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже).

Значение переменной может быть присвоено с помощью оператора вида

имя=[значение]

Если значение не задано, переменной присваивается пустая строка. Во всех значениях выполняется замена тильды, подстановка значений параметров и переменных, обработка строк, подстановка результатов выполнения команд, арифметические вычисления и удаление символов маскировки (см. раздел "ОБРАБОТКА" ниже). Если для переменной установлен атрибут целочисленная (integer) (см. раздел "ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже), ее значение арифметически вычисляется, даже если арифметическое вычисление $((...)) не указано явно (см. подраздел "Арифметическое вычисление" ниже). Разбиение на слова не выполняется, за исключением значения "$@", как объяснено ниже в подразделе "Специальные параметры". Подстановка имен файлов не выполняется.

    Позиционные параметры

Позиционный параметр - это параметр, обозначаемый одной или несколькими цифрами, кроме цифры 0. Позиционным параметрам значения присваиваются на основе аргументов, переданных при вызове командного интерпретатора, и могут быть переприсвоены с помощью встроенной команды set. Позиционным параметрам нельзя присваивать значения с помощью операторов присваивания. Позиционные параметры временно заменяются при выполнении функции командного интерпретатора (см. раздел "ФУНКЦИИ" ниже).

Когда позиционный параметр состоит из нескольких цифр, его надо брать в скобки (см. раздел "ОБРАБОТКА" ниже).

    Специальные параметры

Командный интерпретатор обрабатывает ряд параметров специальным образом. Можно только ссылаться на значения этих параметров - присваивания им не разрешены.

* Заменяется позиционными параметрами, начиная с первого. Когда такая замена выполняется в двойных кавычках, результат будет одним словом, в котором значения параметров разделены первым символом значения специальной переменной IFS. То есть, "$*" эквивалентно "$1c$2c...", где c - первый символ значения переменной IFS. Если переменная IFS не установлена, значения параметров разделяются пробелами. Если переменная IFS имеет пустое значение, значения параметров просто конкатенируются, без разделителей.
@ Заменяется позиционными параметрами, начиная с первого. Когда такая замена выполняется в двойных кавычках, каждый параметр заменяется отдельным словом. То есть, "$@" эквивалентно "$1" "$2" ... Когда позиционных параметров нет, "$@" и $@ заменяются пустой строкой (т.е. они просто удаляются).
# Заменяется десятичным значением количества позиционных параметров.
? Заменяется статусом последнего выполненного в приоритетном режиме конвейера.
- Заменяется флагами текущих опций, заданных при вызове, с помощью встроенной команды set или установленных самим командным интерпретатором (как, например, опция -i).
$ Заменяется идентфикатором процесса командного интерпретатора. В порожденном командном интерпретаторе, запущенном с помощью (), заменяется идентификатором процесса основного интерпретатора, а не порожденного.
! Заменяется идентфикатором последнего процесса, запущенного в фоновом (асинхронном) режиме.
0 Заменяется именем командного интерпретатора или сценария. Это значение устанавливается при инициализации командного интерпретатора. Если bash вызван с командным файлом, $0 будет установлен равным имени этого файла. Если bash запущен с опцией -c, $0 получает значение первого аргумента после строки, которую надо выполнить, если он задан. В противном случае, этот специальный параметр получает значение имени файла, использованного для вызова bash, которое задается нулевым аргументом.
_ При запуске командного интерпретатора устанавливается равным полному имени файла (absolute file name) командного интерпретатора или выполняемого сценария, переданного в списке аргументов. В последствии, заменяется последним аргументом предыдущей команды, с учетом всех замен. Также устанавливается равным полному имен файла каждой выполняемой внешней команды и помещается в среду, экспортируемую для этой команды. При проверке почты, этот параметр содержит имя проверяемого файла почты.

В следующем выпуске

man ifconfig(1M) по UnixWare 2.03. Выпуск ожидается завтра, 13 апреля.

С наилучшими пожеланиями,

  В.К.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное