Co oznacza $ w PowerShell?
Widziałem następujące wiele w PowerShell, ale co to dokładnie robi?
$_
6 answers
Jest to zmienna dla bieżącej wartości w linii potoku, która jest wywoływana $PSItem
w Powershell 3 i nowszych.
1,2,3 | %{ write-host $_ }
Lub
1,2,3 | %{ write-host $PSItem }
Na przykład w powyższym kodzie blok %{}
jest wywoływany dla każdej wartości w tablicy. Zmienna $_
lub $PSItem
będzie zawierać bieżącą wartość.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-03 12:12:06
Myślę, że najprostszym sposobem myślenia o tej zmiennej jest parametr wejściowy w wyrażeniu lambda w C#. Tj. {[8] } jest podobny do x
w x => Console.WriteLine(x)
funkcji anonimowej w C#. Rozważmy następujące przykłady:
PowerShell:
1,2,3 | ForEach-Object {Write-Host $_}
Druki:
1
2
3
Lub
1,2,3 | Where-Object {$_ -gt 1}
Druki:
2
3
I porównaj to ze składnią C# używając LINQ:
var list = new List<int> { 1, 2, 3 };
list.ForEach( _ => Console.WriteLine( _ ));
Druki:
1
2
3
Lub
list.Where( _ => _ > 1)
.ToList()
.ForEach(s => Console.WriteLine(s));
Druki:
2
3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-15 19:53:22
Zgodnie z Ta strona jest odniesieniem do this
, głównie w pętlach.
$ _ (Dolar) "Ten" żeton. Zazwyczaj odnosi się do element wewnątrz pętli foreach. Zadanie: Wydrukuj wszystkie elementy kolekcji. Rozwiązanie. ... / foreach { Write-Host $_ }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-16 14:35:26
$_ jest aliasem automatycznej zmiennej $PSItem (wprowadzonej w PowerShell V3.0; Informacje o użytkowaniu znalezione tutaj), która reprezentuje bieżący element z potoku.
PowerShell (v6.0) dokumentacja online dla zmiennych automatycznych jest tutaj.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 21:51:01
$ _ jest zmienną, która iteruje nad każdym obiektem / elementem przekazanym z poprzedniego / (potoku).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-31 16:18:39
$_
jest zmienną utworzoną przez system Zwykle wewnątrz wyrażeń blokowych, do których odwołują się cmdlety, które są używane z takimi potworami jak Where-Object
i ForEach-Object
.
Ale może być stosowany również w innych typach wyrażeń, na przykład z Select-Object
połączonymi z właściwościami wyrażenia. Get-ChildItem | Select-Object @{Name="Name";Expression={$_.Name}}
. W tym przypadku $_
reprezentuje element będący rurociągiem, ale może istnieć wiele wyrażeń.
Może być również odwoływany przez walidację niestandardowych parametrów, gdzie blok skryptu jest używany do walidacji wartość. W tym przypadku $_
przedstawia wartość parametru otrzymaną z wywołania.
Najbliższą analogią do c# i Javy jest wyrażenie lamda. Jeśli podzielisz powershell na podstawy, wszystko jest blokiem skryptu, w tym plikiem skryptu a, funkcjami i cmdletami. Możesz zdefiniować własne parametry, ale w niektórych przypadkach jeden jest tworzony przez system dla Ciebie, który reprezentuje element wejściowy do przetworzenia / oceny . W takich sytuacjach automatyczna zmienna jest $_
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 19:33:14