2017-11-04 82 views
-1
$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

回答

2

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的第一個元素。

希望是有道理夠你...

2

什麼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的幫助下),我們可以看到它正在返回該文件中包含的每行對象。

當我們將這些原則應用於您提供的腳本時,我們可以確定腳本將以相反的順序返回文件的行。