Spec-Zone.ru › Nushell

def для core

Определить пользовательскую команду.

Сигнатура

> def {flags} (def_name) (params) (block)

Флаги

  • --env: Сохраняет окружение, определённое внутри команды.
  • --wrapped: Интерпретирует неизвестные флаги и аргументы как строки (требуется параметр, похожий на ...rest, в сигнатуре).

Параметры

  • def_name: Имя определяемой команды.
  • params: Параметры команды — список через запятую внутри [].
  • block: Тело команды — список инструкций внутри {}.

Типы входных и выходных данных:

входные данные выходные данные
ничего ничего

Примеры

Определите команду и выполните её.

> def say-hi [] { echo 'hi' }; say-hi
hi

Определите команду и выполните её с параметрами.

> def say-sth [sth: string] { echo $sth }; say-sth hi
hi

Установите переменную окружения, вызвав пользовательскую команду.

> def --env foo [] { $env.BAR = "BAZ" }; foo; $env.BAR
BAZ

Команда cd изменяет окружение, поэтому для смены каталога внутри команды требуется флаг '--env'.

> def --env gohome [] { cd ~ }; gohome; $env.PWD == ('~' | path expand)
true

Определите пользовательскую обёртку для внешней команды.

> def --wrapped my-echo [...rest] { ^echo ...$rest }; my-echo -e 'spam\tspam'
spamspam

Определите пользовательскую команду с сигнатурой типов. Передача значения, не являющегося int, приведёт к ошибке.

> def only_int []: int -> int { $in }; 42 | only_int
42

Примечания

Эта команда является ключевым словом парсера. Подробнее см. https://www.nushell.sh/book/thinking_in_nu.html

Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/def.html

Spec-Zone.ru

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