$s
由於您定義數組的方式而包含單個字符串。級聯運算符(+
)比陣列構建運算符(,
)有更弱的precedence。正因爲如此的聲明
'foo' + $v + 'bar', 'foo' + $v + 'baz'
實際上是這樣的:
'foo' + $v + @('bar', 'foo') + $v + 'baz'
由於字符串連接操作該陣列被錯位到空間分隔的字符串(隔板在automatic variable$OFS
定義) ,導致如下結果:
'foo' + $v + 'bar foo' + $v + 'baz'
要避免此行爲,您需要將拼接操作放在分組表達式中sions:
$s = ('https://google.com/' + $IPAddress + '/hostname'),
('https://google.com/' + $IPAddress + '/DNS')
或內聯變量(需要雙引號字符串):
$s = "https://google.com/${IPAddress}/hostname",
"https://google.com/${IPAddress}/DNS"
您也可以使用format operator,但是這需要分組表達式以及:
$s = ('https://google.com/{0}/hostname' -f $IPAddress),
('https://google.com/{0}/DNS' -f $IPAddress)
附註:將變量投射到[string[]]
是可選的。即使沒有明確的轉換,使用逗號運算符也會給你一個數組。
謝謝,這非常有幫助! – spunkyquagga