Spec-Zone.ru › Bash

Параметры оболочки

​ ​ ​

Параметр — это сущность, хранящая значения. Это может быть name, число или один из перечисленных ниже специальных символов. Переменная — это параметр, обозначаемый с помощью name. У переменной есть value и ноль или более attributes. Атрибуты назначаются с помощью встроенной команды declare (см. описание встроенной команды declare в разделе Встроенные команды Bash). Встроенные команды export и readonly назначают определённые атрибуты.

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

Переменной присваивается значение с помощью инструкции следующего вида:

name=[value]

Если value не указано, переменной присваивается пустая строка. Для всех значений value выполняются раскрытие тильды, раскрытие параметров и переменных, подстановка команд, арифметическое раскрытие и удаление кавычек (см. раздел Раскрытие параметров оболочки). Если установлен атрибут integer переменной, то value вычисляется как арифметическое выражение, даже если раскрытие $((…)) не используется (см. раздел Арифметическое раскрытие). Разбиение слов и раскрытие имён файлов не выполняются. Инструкции присваивания также могут использоваться в качестве аргументов встроенных команд alias, declare, typeset, export, readonly и local (команд объявления). В режиме POSIX (см. раздел Bash и POSIX) эти встроенные команды могут следовать в команде за одним или несколькими экземплярами встроенной команды command и сохраняют свойства инструкций присваивания. Например:

command export var=value

В контексте, где инструкция присваивания задаёт значение переменной оболочки или индексу массива (см. раздел Массивы), оператор «+=» добавляет данные к предыдущему значению переменной. Это относится и к аргументам команд объявления, таких как declare, которые принимают инструкции присваивания. Если оператор «+=» применяется к переменной, для которой установлен атрибут integer, текущее значение переменной и value вычисляются как арифметические выражения, а сумма результатов присваивается переменной. Текущее значение обычно является целочисленной константой, но может быть и выражением. Если оператор «+=» применяется к переменной-массиву с помощью составного присваивания (см. раздел Массивы), значение переменной не удаляется (в отличие от использования «=»), а новые значения добавляются в массив, начиная с индекса, на единицу большего максимального индекса массива (для индексированных массивов), либо добавляются как дополнительные пары ключ-значение в ассоциативный массив. При применении к переменной со строковым значением value раскрывается и добавляется к значению переменной.

Переменной можно назначить атрибут nameref с помощью параметра -n встроенных команд declare или local (см. раздел Встроенные команды Bash), чтобы создать ссылку на имя (nameref), то есть ссылку на другую переменную. Это позволяет косвенно работать с переменными. При обращении к переменной-ссылке на имя, присваивании ей значения, удалении её или изменении её атрибутов (кроме использования или изменения самого атрибута ссылки на имя) операция фактически выполняется над переменной, указанной значением переменной-ссылки на имя. Ссылку на имя часто используют внутри функций оболочки для обращения к переменной, имя которой передаётся функции в качестве аргумента. Например, если имя переменной передаётся функции оболочки в качестве первого аргумента, выполнение

declare -n ref=$1

внутри функции создаёт локальную переменную-ссылку на имя ref, значением которой является имя переменной, переданное в качестве первого аргумента. Обращения к ref и присваивания ей значений, а также изменения её атрибутов рассматриваются как обращения к переменной, присваивания ей значений и изменения её атрибутов, имя которой было передано как $1.

Если управляющая переменная цикла for имеет атрибут ссылки на имя, список слов может содержать список переменных оболочки; при выполнении цикла для каждого слова по очереди создаётся ссылка на имя. Переменным-массивам нельзя назначить атрибут ссылки на имя. Однако переменные-ссылки на имя могут ссылаться на переменные-массивы и индексированные элементы массивов. Ссылки на имя можно удалить с помощью параметра -n встроенной команды unset (см. раздел Встроенные команды Bourne Shell). В противном случае, если unset выполняется с именем переменной-ссылки на имя в качестве аргумента, удаляется переменная, на которую ссылается эта переменная-ссылка на имя.

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

  • Позиционные параметры
  • Специальные параметры

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Shell-Parameters.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API