Bash - командный интерпретатор GNU Bourne


ФУНКЦИИ


Функция командного интерпретатора, определенная как было представлено ранее в разделе "", сохраняет под заданным именем последовательность команд для выполнения в дальнейшем. Функции выполняются в контексте текущего командного интерпретатора; для их интерпретации не создается новый процесс (сравните с выполнением сценария командного интерпретатора). При вызове функции ее аргументы становятся позиционными параметрами. Специальный параметр # обновляется, отражая это изменение. Позиционный параметр 0 не изменяется. Все остальные особенности среды выполнения командного интерпретатора у функции и вызывающей ее команды идентичны, только обработчик сигнала DEBUG (см. описание встроенной команды в разделе "" ниже) не наследуется.

Можно объявлять локальные переменные функции с помощью встроенной команды . Обычно переменные и их значения совместно используются функцией и вызвавшей ее командой.

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

Имена и определения функций можно получить с помощью опции -f встроенных команд или . С опцией -F встроенные команды и будут выдавать только имена функций. Функции можно экспортировать, с помощью опции -f встроенной команды , так что они будут автоматически определены в порожденных командных интерпретаторах.

Функции могут быть рекурсивными. Глубина рекурсии не ограничена.



Содержание раздела