大家好我是新的power shell,并试图对每个循环有意义,但我不明白在下面的脚本中+ $是什么意思,为什么它们一起使用如何理解powershell中的foreach循环
$names = "jones","mike","Ash"
foreach ($name in $names)
{
"$name = " + $name.length
}
大家好我是新的power shell,并试图对每个循环有意义,但我不明白在下面的脚本中+ $是什么意思,为什么它们一起使用如何理解powershell中的foreach循环
$names = "jones","mike","Ash"
foreach ($name in $names)
{
"$name = " + $name.length
}
首先,它是PowerShell的。没有空间,并观察字母的大小写。
二,RTFM。 Technet上有很多文档。利用它。有内置的帮助。阅读Help about_*
的话题。
回到你的问题,foreach
循环迭代所有集合。在你的例子中,$names
是一串字符串。数组是一个集合。
在您的示例中,当foreach
循环遍历集合时,它将集合中的每个项目复制到名为$name
的另一个变量。
foreach ($name in $names) {}
里面的foreach
循环,您可以使用$name
变量来检索存储在该项目的价值。所以,下面的代码将打印集合中的值。
foreach ($name in $names) {
$name
}
$name
是一个字符串。所以,$name.Length
给了我们该字符串的长度。
+
是算术运算符。它可以用来连接字符串。在这种情况下,$name + $name.length
将导致值附加长度。
下面是修改示例输出:
$names = "jones","mike","Ash"
foreach ($name in $names)
{
$name + $name.Length
}
jones5
mike4
Ash3
最后,来到你的例子和输出:
$names = "jones","mike","Ash"
foreach ($name in $names)
{
"$name = " + $name.Length
}
jones = 5
mike = 4
Ash = 3
我希望这提供了什么样的例子做一些解释你。
非常感谢你。 – user3770612
让我们来看看一步一步:
$names = "jones","mike","Ash"
这声明数组有三个项目,并将其存储在变量$名称。
foreach ($name in $names) { }
这是一个遍历$ names数组变量中所有项的循环。每个项目都被“复制”到“$ name”变量中,所以当您使用$name
时,您正在使用循环中的当前项目。
"$name = " + $name.length
这将输出$ name变量的内容和由$ name表示的对象的“length”属性。如果你记得,我们宣布一个字符串项目的数组,换句话说字符串对象。字符串对象具有属性和方法,其中一个属性是指示字符串有多长的length
属性。
虽然这个符号有点奇怪。在PowerShell中,嵌入到字符串中的变量(例如"start $name end"
)将被替换为字符串值,所以"start $name end"
将变为start jones end
,但不能只写"start $name.length end"
,因此在本例中,作者使用+来连接( append)这两个字符串,另一种解决方案是"$name = $($name.length))"
:这样一个单独的字符串文字将同时包含字符串和它的长度属性
我刚从谷歌复制了这个脚本,但试图理解for循环。什么是每个循环的$名称,我很困惑,因为我们声明的变量是$ names – user3770612