2014-07-02 77 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))":這樣一個單獨的字符串文字將同時包含字符串和它的長度屬性