7

非常に単純なスクリプト例を次に示します。

function fun () { "AAA $args ZZZ" }
fun a b c
fun a - b
fun a -- b
fun a '--' b
fun a --- b

私が得る結果は次のとおりです。

AAA a b c ZZZ
AAA a - b ZZZ
AAA a b ZZZ
AAA a -- ZZZ
AAA a --- b ZZZ

私はどうやら二重ダッシュを脱出する必要があります。なんで?

私は一連のスクリプトのPowerShellラッパーを作成していますが、それらのスクリプトの一部は「-」に特定の意味を割り当てています。どうすれば変更せずに通過できますか?

4

1 に答える 1

8

-- 特別な「パラメーターの終わり」パラメーターと見なされます。

Bruce Payette の Windows PowerShell in Action から:

引用符は、パラメーター バインダーが引用符で囲まれた文字列をパラメーターとして扱わないようにします。あまり使用されないもう 1 つの方法は、特殊な「end-ofparameters」パラメーターを使用することです。これは、2 つのハイフンを続けて (--) 使用します。

このシーケンスの後のすべては、たとえパラメーターのように見えても、引数として扱われます。たとえば、 -- を使用すると、引用符を使用せずに文字列 -InputObject を書き出すこともできます。

PS (3) > Write-Output -- -InputObject

出力として -inputobject になります。

于 2012-08-30T13:35:25.533 に答える