2014-07-02 43 views
-1

大家好我是新的power shell,并试图对每个循环有意义,但我不明白在下面的脚本中+ $是什么意思,为什么它们一起使用如何理解powershell中的foreach循环

$names = "jones","mike","Ash" 
foreach ($name in $names) 
{ 
    "$name = " + $name.length 
} 
+0

我刚从谷歌复制了这个脚本,但试图理解for循环。什么是每个循环的$名称,我很困惑,因为我们声明的变量是$ names – user3770612

回答

3

首先,它是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 

我希望这提供了什么样的例子做一些解释你。

+0

非常感谢你。 – user3770612

1

让我们来看看一步一步:

$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))":这样一个单独的字符串文字将同时包含字符串和它的长度属性