¿Qué significa $_ en PowerShell?
He visto mucho lo siguiente en PowerShell, pero ¿qué hace exactamente?
$_
Aceptado
Esta es la variable para el valor actual en la tubería, que se llama $PSItem
en 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 $PSItem
contendrá el valor actual.
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 x
la 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