Что означает $ _ в PowerShell?

Я много раз видел следующее в PowerShell, но что именно он делает?

$_
218
задан Peter Mortensen 1 February 2016 в 09:54
поделиться

4 ответа

Это переменная для текущего значения в конвейере, которая в Powershell 3 и новее называется $PSItem.

1,2,3 | %{ write-host $_ } 

или

1,2,3 | %{ write-host $PSItem } 

Например, в приведенном выше коде блок %{} вызывается для каждого значения в массиве. Переменная $_ или $PSItem будет содержать текущее значение.

161
ответ дан 23 November 2019 в 04:13
поделиться

Согласно сайту this, это ссылка на this, в основном в циклах.

$_ (долларовое подчеркивание) Токен 'THIS'. Обычно ссылается на элемент внутри цикла foreach. Задача: Вывести все элементы в коллекции. Решение. ... | foreach { Write-Host $_ }

27
ответ дан 23 November 2019 в 04:13
поделиться

Я думаю, что проще всего представить эту переменную как входной параметр в лямбда-выражении в C#. т.е. $_ аналогичен x в анонимной функции x => Console.WriteLine(x) в C#. Рассмотрим следующие примеры:

PowerShell:

1,2,3 | ForEach-Object {Write-Host $_}

Отпечатки:

1
2
3

или

1,2,3 | Where-Object {$_ -gt 1}

Отпечатки:

2
3

И сравните это с синтаксисом C#, используя LINQ:

var list = new List<int> { 1, 2, 3 };
list.ForEach( _ => Console.WriteLine( _ ));

Отпечатки:

1
2
3

или

list.Where( _ => _ > 1)
    .ToList()
    .ForEach(s => Console.WriteLine(s));

Отпечатки:

2
3
37
ответ дан 23 November 2019 в 04:13
поделиться

$_ — это переменная, которая перебирает каждый объект/элемент, переданный из предыдущего | (трубка).

1
ответ дан 23 November 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: