2016-02-26 28 views
3

我有哪裏函數參數表示這樣的腳本:

param(
    ${param1}, 
    ${param2}, 
    ${param3} 
) 

是什麼意思?我一直無法找到關於此的文檔。

什麼的寫作參數的方式,而不是更常見的

param(
    $param1, 
    $param2, 
    $param3 
) 

點?

回答

8

它們都只是參數聲明。這兩個片段是相同的。這兩種語法都可以在這裏使用,但是支撐形式允許在變量名中不會合法的字符。從PowerShell的3.0語言規範:

有寫一個變量名的方法有兩種:一支撐變量名,這與$開頭,後跟一個花括號分隔組的一個或多個幾乎任意字符;和一個普通變量名稱,它也以$開頭,後面跟着一個比限制性變量名稱允許的限制性更強的一個或多個字符。每個普通的變量名都可以用相應的支撐變量名來表示。

about_Variables

要創建或顯示變量名包括空格或特殊字符,在大括號括變量名。這指示Windows PowerShell逐字地解釋變量名稱中的字符。

例如,以下命令將創建並顯示名爲「save-items」的變量。

C:\PS> ${save-items} = "a", "b", "c" 
C:\PS> ${save-items} 
a 
b 
c 
+3

附加鏈接:['獲取幫助about_Variables '](https://technet.microsoft.com/library/hh847734.aspx)。尋找*包含特殊字符*的變量名稱。 – PetSerAl

+1

另外,請記住即使變量名稱可以包含空格和特殊字符,但[這些難以使用並且應該避免](https://technet.microsoft.com/zh-cn/library/hh847734。 ASPX)。 – vonPryz

1

它們是等價的。這只是一種聲明變量的替代方法。

如果你的字符在普通變量中是非法的,你可以使用大括號(把它想象爲「轉義」變量名)。

7

@ MikeZ的回答在解釋問題中的例子中是相當正確的,但就解決問題標題而言,實際上還有更多要說的! ${}表示法實際上有兩個的用法;第二個是PowerShell中的一個隱藏的寶石:

bracket notation examples

也就是說,你可以使用這個括號符號做文件I/O操作,如果你提供一個驅動合格的路徑,如定義MSDN頁面Provider Paths

(以上圖片來自Complete Guide to PowerShell Punctuation,單頁掛圖免費提供下載,貼在我最近的一篇文章在Simple-Talk.com。)