Powershell,这段代码的每个部分究竟做了什么?

Powershell,这段代码的每个部分究竟做了什么?

问题描述:

$a = gc "$home\documents\textfile.txt" 
for ($i = 0; $i -lt $a.Count + 1; $i++) 
{ 
    $a[($a.count-1) - $i] 
} 

我知道第一行获取文本文件的内容,并且文件从下到上显示,但for循环究竟是按部就班地进行的?Powershell,这段代码的每个部分究竟做了什么?

+3

关闭投票为'寻找教程',这是明确的主题;他们中有很多已经上网,并且没有阅读任何内容,显然没有尝试任何解决它的功能,但是期待别人给你写信,而另一个自定义教程有点厚颜无耻。你的大学情况是不幸的,但真的是你要求你付出的服务或退款,而不是在这里发泄。 – TessellatingHeckler

+0

简单地把它放在反向行顺序文件。 – jkdba

for循环将$ i设置为0,只要小于或等于$ a.Count-1就循环并在每次迭代后递增。

$ a.Count是文件中行的总数,所以$ a.Count-1是$ a的最后一个元素(行),它是一个从零开始索引的数组。

在每次迭代中,$ i变大,因此循环内部的行将返回最后一个元素减去$ i时保存的值。

如果$ a有5行,例如$ a中有5个元素。这些是$ a [0]到$ a [4]

在第一次迭代中,$ i为零,所以方括号内的值计算为5-1-0 = 4.这给出了最后一行。

在第二次迭代中,所有变化是$ i递增。这将评估为5-1-1 = 3.这是倒数第二行。

这会持续到$ i = 4(即$ a.Count-1)并且代码评估5-1-4 = 0,这会导致输出$ a的第一个元素。

希望是有道理够你...

什么for循环做的是让由$提供的字符串的索引。

你可以通过设置一个变量等于一个字符串或数组,并查看其中的每个索引来玩索引。以,例如,$x = "this is a string"。然后你可以看看$ x [n],其中n是一个整数,它会告诉你该字符串或数组中包含的索引。对于$x[0] Powershell会返回“t”,或者如果$ x是一个字符串数组,它将返回“this”。

现在我们知道索引是什么了,我们可以看看for循环中的数学运算符。以Powershell正在处理它的方式来思考这个问题,我们将从括号开始。 $a.count返回一个等于$ a中包含的对象数量的值。如果我们看看Get-Content返回什么(在我们方便的Get-Help gc的帮助下),我们可以看到它正在返回该文件中包含的每行对象。

当我们将这些原则应用于您提供的脚本时,我们可以确定脚本将以相反的顺序返回文件的行。