PowerShell(フィルタ)


ドラマ『わにとかげぎす』
38年間友達なし彼女なしの男に、初とも、初かのができるが...ん~、どういう展開になるんでしょうか。謎で面白そうです。

(本記事はPowerShell入門記事としてコチラにもまとめています。)

今回はフィルタです。オブジェクトをフィルタする場合は、%(ForEach-Object)を使いますが、

PS C:\Users\takk\aaa> 1..10 | %{$_*$_}
1
4
9
16
25
36
49
64
81
100
PS C:\Users\takk\aaa>

これを関数化するには、filterを使います。

PS C:\Users\takk\aaa> filter squre(){
>> $_*$_
>> }
>>
PS C:\Users\takk\aaa> 1..10 | squre
1
4
9
16
25
36
49
64
81
100
PS C:\Users\takk\aaa>

始めと終わりの処理をしたい時は、%を使う場合は、{}を3つ置きます。

PS C:\Users\takk\aaa> 1..10 | %{$sum=0}{$sum+=$_}{$sum}
55
PS C:\Users\takk\aaa>

この3つの{}は、単にBegin/Process/Endの指定を省略しているだけです。

PS C:\Users\takk\aaa> 1..10 | % -Begin{$sum=0} -Process{$sum+=$_} -End{$sum}
55
PS C:\Users\takk\aaa>

ですので、filterを使う場合は、Begin/Process/Endブロックそれぞれの中に必要な処理を書けばよいです。

PS C:\Users\takk\aaa> filter sum(){
>> begin{$sum=0}
>> process{$sum += $_}
>> end{$sum}
>> }
>>
PS C:\Users\takk\aaa> 1..10 | sum
55
PS C:\Users\takk\aaa>

コメント

タイトルとURLをコピーしました