PowerShell循环变量运算符$_

PowerShell中有太多稀奇古怪的运算符,洪哥的感觉就是微软把键盘上能找到的运算符都放入到语法里面去了。今天我们要谈的一个循环变量运算符“$_”。

“$_”,循环变量运算符,这个名称有可能是洪哥自己杜撰的,因为洪哥并没有在其他什么地方见过这个说法。但我们如果把它叫做循环变量运算符,那就比较好理解它的用途了。

先看一下例子:

$ipV4 = '192.168.12.33'

-join ($ipV4.Split('.') | ForEach-Object {[System.Convert]::ToString($_,2).PadLeft(8,'0')})

这个例子,是之前出现过的,把一个“点分十进制”的IP地址转换成一串二进制字符串的代码。

首先,$ipV4.Split('.'),得到一个数组。

然后,ForEach-Object,这个PowerShell的cmdlet是用来循环数组中的各个元素的。

最后,要对每个元素进行相应的处理,[System.Convert]::ToString($_,2),这里面出现了“$_”,循环变量运算符。而“$_”就代表了当次循环的那一个元素。什么意思呢,'192.168.12.33'这个字符串被按点(.)分了数组后,就有192、168、12和33四个数组元素。在循环的第一次中,“$_”就表示的是192,第二次表示168,以此类推。

最后,洪哥简单总结一下,只要出现ForEach-Object的地方,都会出现“$_”这个循环变量运算符。

03-15 18:52