1
在Unix shell腳本,調用命令foo
原始腳本變量的情況,你只寫
foo [email protected]
在PowerShell中,$args
是保持當前腳本的參數(典型值)的字符串數組。如果你寫
foo $args
會發生同樣的事情發生在bash或其他典型的Unix shell腳本解釋器?
在Unix shell腳本,調用命令foo
原始腳本變量的情況,你只寫
foo [email protected]
在PowerShell中,$args
是保持當前腳本的參數(典型值)的字符串數組。如果你寫
foo $args
會發生同樣的事情發生在bash或其他典型的Unix shell腳本解釋器?
您想使用PowerShell 2.0中新增的參數splatting。用於splatting的變量可以是數組(args是位置綁定的),也可以是散列表(鍵映射到參數名稱及其值提供參數)。如果您沒有聲明任何參數,請使用@args
。試圖使用$args
的問題在於它將作爲數組發送到第一個參數,而不是濺射到所有參數中。不過很多人都會聲明參數。在這種情況下,您想使用@PSBoundParameters例如:
foo @PSBoundParameters
請注意,這與傳遞所有參數並不完全相同。開關將作爲布爾參數出現。 – JasonMArcher 2010-09-07 17:28:43
對於所有「綁定」參數,* *都是相同的。也就是說,PowerShell會將bool應用於下游開關參數,因此您不會意識到它經過了bool。除了[switch]只是一個坐在bool頂部的解析構造。現在'@ PSBoundParameters'沒有給你的是任何未綁定的參數。 – 2010-09-07 19:57:27