Параметры в shell

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

 

Переменная представляет собой параметр, который обозначается именем. Переменная имеет значение и ноль или больше атрибутов. Атрибуты определяются с использованием метода объявления встроенной команды(встроенные команды я буду описывать ниже.)

 

Параметр устанавливается если ему было присвоено значение. Пустая строка, представляет собой допустимое значение. После установки переменной, она может быть снята лишь с помощью встроенной команды unset(Встроенные команды shell я буду описывать позже)

 

Переменная может быть назначена в виде:

 

name=[значение]

 

Если значение переменной не задано, то переменной присваивается пустая строка. Во всех значениях выполняются замены тильды, параметров и переменных, подстановки команд, арифметическое вычисление, а так же удаление кавычек. Если переменная имеет свой целочисленный набор атрибутов, то значение используется как арифметическое выражение, даже если $((…)) расширения не используется (Арифметические подстановки я опишу ниже). Слово splitting не выполняется, за исключением «$@», как я буду описывать ниже в разделе Специальные параметры. Подстановка имен файлов не выполняется. Операторы присваивания, могут так же появляться в качестве аргументов к alias, declare, typeset, export, readonly и локальным встроенным командам.

 

В условии, когда оператор присваивания, присваивает значение переменной shell или индексу массива, оператор «+=» может быть использован для добавления, или для того чтобы добавить предыдущее значение к переменной. Когда «+=» применяется к переменной, для которой установлен целочисленный атрибут, значение вычисляется как среднее арифметическое выражение и добавляется к текущему значению переменной, которая также оценивается. Когда «+=» применяется к переменной массива с использованием соединения назначения(это я буду описывать в разделе Массивы позже), значение переменной будет предварительно сброшено(как при использовании «=»), а также будут добавлены новые значения в массив, начиная с одного массива с максимальным индексом(для индексированных массивов) или добавить в как дополнительные ключевые значения в ассоциативном массиве. Когда применяется строка значения переменной, значение раскрывается и добавляется к значению переменной.

 

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

 

Позиционным параметром, является параметр, обозначаемый одной либо несколькими цифрами, кроме цифры 0. Позиционные параметры, присваиваются из аргументов shell при вызове и могут быть назначены с помощью встроенного набора команд. Позиционные параметры не могут быть назначены с операторами присваивания. Позиционные параметры временно заменяются, когда выполняется shell функция(Функции я буду описывать в дальнейшем).

 

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

 

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

Shell рассматривает несколько специальных параметров. Эти параметры можно только вызывать; закрепление за ними не допускается.

 

* — Заменяется позиционными параметрами, начиная от одного. Если раскрытие происходит в двойных кавычках, он заменяется одним словом, значение каждого параметра, разделены первым символом специальной переменной IFS. То есть, «$*» эквивалентно «$1c$2c…», где с первого символа значение переменной IFS. Если переменная IFS не установлена, параметры разделяются пробелами. Если переменная IFS имеет нулевое значение, параметры соединяются без промежуточных разделителей.

@ — заменяет позиционные параметры начиная с первого. Если раскрытие происходит в двойных кавычках, каждый параметр расширяется в отдельное слово. То есть, «$ @» эквивалентно «$ 1» «$ 2» и тд. Когда же позиционных параметров нет, «$@» и $@ расширение не происходит, (тоесть просто удаляется)

# — раскрывается в десятичным значением позиционных параметров.

? — Раскрывается статусом последнего выполненного приоритетного перехода(конвейера)

— Расширяется текущими флагами опций, указанных при вызове, с помощью встроенного набора команд set, или теми которые установленны shell(например опция «параметр» -i)

$ — расширяется в идентификатор ID shell. В подоболочке(), расширяется ID (идентификатор процесса) текущей оболочки, а не подоболочки.

! — расширется в идентификатор процесса последней выполненной в фоне(асинхронно)команды.

0 — Расширяется в имя сценария shell или имя оболочки. Это устанавливается при инициализации shell интерпритатора. Если оболочка Bash вызывается с файлом команды, $0 устанавливается на это имя файла. Если bash запускается с опцией(параметром -c, то $0 устанавливается на первый аргумент после строки, которая будет выполнена, если он есть. В ином случае, он устанавливается в имя файла, который используется для вызова bash, который задается нулевым аргументом.

_ — При запуске shell, устанавливается абсолютный путь использующийся для вызова интерпретатора или выполняющегося сценария переданного в списке аргументов. Затем расширяется предыдущим аргументом, предыдущей команды, с учетом всех расширений. Также устанавливается полный путь используемый для вызова каждой выполненной команды и помещается в среду, экспортируемую для этой команды. При проверке почты, этот параметр содержит имя файла почты, который в настоящее время проверяется.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *