如何理解powershell中的foreach循环

如何理解powershell中的foreach循环,powershell,Powershell,大家好,我是power shell的新手,我试图理解每个循环的意义,但我不明白下面的脚本中+$的含义以及它们一起使用的原因 $names = "jones","mike","Ash" foreach ($name in $names) { "$name = " + $name.length } 首先,它是PowerShell。没有空格,请注意字母的大小写 第二,RTFM。Technet上有很多文档。利用这一点。有内置的帮助。阅读有关主题的帮助 说到您的问题,foreach循环迭代所有集

大家好,我是power shell的新手,我试图理解每个循环的意义,但我不明白下面的脚本中+$的含义以及它们一起使用的原因

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

首先,它是PowerShell。没有空格,请注意字母的大小写

第二,RTFM。Technet上有很多文档。利用这一点。有内置的帮助。阅读有关主题的帮助

说到您的问题,
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

我希望这能为您提供一些关于示例所做工作的解释。

首先,它是PowerShell。没有空格,请注意字母的大小写

第二,RTFM。Technet上有很多文档。利用这一点。有内置的帮助。阅读有关主题的帮助

说到您的问题,
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

我希望这能为您提供一些关于示例所做工作的解释。

让我们一步一步地看一下:

$names = "jones","mike","Ash"
这声明了一个包含三个字符串项的数组,并将其存储在$names变量中

foreach ($name in $names) { }
这是一个循环,循环遍历$names数组变量中的所有项。每个项都“复制”到“$name”变量中,因此当您使用
$name
时,您使用的是循环中的当前项

"$name = " + $name.length
这将输出$name变量的内容和由$name表示的对象的“length”属性。如果您还记得,我们声明了一个字符串项数组,换句话说就是字符串对象。Strings对象具有属性和方法,其中一个属性是
length
属性,用于指示字符串的长度


不过,这个符号有点奇怪。在PowerShell中,嵌入到字符串文字中的变量(例如
“start$name end”
将替换为其字符串值,因此
“start$name end”
将成为第一项的
start$end
。但是,您不能只编写
“start$name.length end”
,因此在本例中,作者使用+连接(追加)两个字符串。另一种解决方案是
“$name=$($name.length))”
:这样一来,单个字符串文本将同时包含字符串及其length属性。

让我们一步一步地看一下:

$names = "jones","mike","Ash"
这声明了一个包含三个字符串项的数组,并将其存储在$names变量中

foreach ($name in $names) { }
这是一个循环,循环遍历$names数组变量中的所有项。每个项都“复制”到“$name”变量中,因此当您使用
$name
时,您使用的是循环中的当前项

"$name = " + $name.length
这将输出$name变量的内容和由$name表示的对象的“length”属性。如果您还记得,我们声明了一个字符串项数组,换句话说就是字符串对象。Strings对象具有属性和方法,其中一个属性是
length
属性,用于指示字符串的长度


不过,这个符号有点奇怪。在PowerShell中,嵌入到字符串文字中的变量(例如
“start$name end”
将替换为其字符串值,因此
“start$name end”
将成为第一项的
start$end
。但是,您不能只编写
“start$name.length end”
,因此在本例中,作者使用+连接(追加)两个字符串。另一种解决方案是
“$name=$($name.length))”
:这样一个字符串文本将同时包含字符串及其length属性。

我刚从google复制了这个脚本,但试图理解for循环。每个循环中的$name是什么,我很困惑,因为我们声明的变量是$names。我刚从google复制了这个脚本,但试图理解for循环。对于每个循环,$name是什么,我很困惑,因为我们声明的变量是$name