Запутанная оценка $ args в PowerShell - PullRequest
3 голосов
/ 16 января 2009

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

См. Этот пример:

function test { 1..3 | % { echo "args inside pipeline: $args" } ; echo "args outside pipeline: $args" }

Это вывод при передаче параметра "привет":

PS> test hello
args inside pipeline:
args inside pipeline:
args inside pipeline:
args outside pipeline: hello

Есть ли конкретная причина для этого? Я знаю, как обойти это, однако мне интересно, может ли кто-нибудь объяснить причину этого.

1 Ответ

5 голосов
/ 16 января 2009

Трубы используют $ input. Попробуйте это:

function test { 1..3 | % { echo "args inside pipeline: $input" } ; echo "args outside pipeline: $args" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...