注:雖然這個回答涵蓋了PowerShell的串插在許多方面,該主題的更全面的治療可以在我的this answer被發現。
當嵌入在雙引號字符串變量引用僅簡單變量引用可以嵌入而不包圍在所謂的子表達式運算符,$(...)
表達式:
> $mylist = @("abc", "def") # define an array
> "$mylist[0]" # WRONG: $mylist (the whole array) is expanded, and "[0]" is a literal.
abc def[0]
> "$($mylist[0])" # OK: $(...) ensures that the subscript is recognized.
abc
要更精確,可以直接嵌入以下變量引用在雙引號ED串/以便讓他們膨脹(插值)這裏串:
- 一個可變用名字引用僅;例如
"I'm $HOME."
- a 變量與範圍說明符;例如,
"I'm on a spiritual $env:PATH."
要消除歧義變量名從後續字符,它括在{...}
;例如,
"I'm ${HOME}:"
請注意,如果沒有{...}
,最終的:
將被解釋爲變量名稱的一部分,並且會導致錯誤。
或者,您可以逃避:
爲`:
,同樣,使用`$
逃脫(創建字面)$
。
對於一切,包括訪問數組變量的下標或對象變量的財產,你需要的次表達式運算,$(...)
。
請注意,$(...)
允許您將整個命令行嵌入到字符串中;例如:
> "Today is $((Get-Date).ToString('d'))."
Today is 10/13/16. # en-US culture
文檔注:Get-Help about_Quoting_Rules
涵蓋串插,但是,PSv5的,不深入。
對於替代串插(擴大)建設字符串,見Ansgar Wiecher's answer。