¿Qué significa $_ en PowerShell?

Resuelto Micah asked hace 14 años • 7 respuestas

He visto mucho lo siguiente en PowerShell, pero ¿qué hace exactamente?

$_
Micah avatar Aug 16 '10 21:08 Micah
Aceptado

Esta es la variable para el valor actual en la tubería, que se llama $PSItemen Powershell 3 y versiones posteriores.

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

o

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

Por ejemplo, en el código anterior, %{}se llama al bloque para cada valor de la matriz. La variable $_o $PSItemcontendrá el valor actual.

JaredPar avatar Aug 16 '2010 14:08 JaredPar

Creo que la forma más sencilla de pensar en esta variable como parámetro de entrada en una expresión lambda en C#. Es decir, $_es similar a xla x => Console.WriteLine(x)función anónima en C#. Considere los siguientes ejemplos:

Potencia Shell:

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

Huellas dactilares:

1
2
3

o

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

Huellas dactilares:

2
3

Y compare esto con la sintaxis de C# usando LINQ:

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

Huellas dactilares:

1
2
3

o

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

Huellas dactilares:

2
3
Sergey Teplyakov avatar Aug 20 '2010 21:08 Sergey Teplyakov