2017-07-27 10 views
-1

を包んこのスニペットを考えてみましょう:は、変数を展開し、引用符で

$foo = "b a r" 
Some-Cmdlet -MyParam $foo 

私はb a r-MyParamとしてパラメータを渡すしたいと思います。呼び出しが評価されるため、明らかに機能しません。

Some-Cmdlet -MyParam b a r 

とスペースを使用すると、パラメータが3つの別個の文字に分割されます。私はこのように引用符を追加することができます。

Some-Cmdlet -MyParam '"'+$foo+'"' 

が、変数を拡大しながら、それらを連結せずに引用符を追加する方法があります場合、私は思っていました。言い換えれば:+を使わないで。おそらく次のようなものでしょう:

Some-Cmdlet -MyParam "\"$foo\"" 

\はエスケープ演算子でした。

+2

変数をコマンドレットに渡して、変数値に引用符を追加しますか?変数の作成方法によっては、最初に変数を設定したときに変数の文字列に引用符を追加することができます(例えば、 '$ myvar =" \ '" my value \ '" "'バックテック\ 'はエスケープですPowershellの文字 –

+2

"*呼び出しが評価されるため、明らかに動作しません:' Some-Cmdlet -MyParam bar'とスペースはパラメータを3つの別個の文字に分割します* " - それはどうやって明らかですか?それはしません - もし言語が変数の内容にインタラクティブなコマンドラインパーサを走らせたとしても(なぜそうでしょうか?)、文字列をスペースで分割したとしても、配列はスペースではないので、パラメータは3つの別個の文字ではありません – TessellatingHeckler

+0

同様に、それを試してみると、すべてのものを書いてそれをフォーマットするよりも、時間がかかりませんでした:[TryItOnlineの例](https:// tio .run/## K8gvTy0qzkjNyfn/P600L7kkMz9PoSS1uEShWqEgsSgxV0OlQlNBSVelQldJoZZLJS0/X8FWQSlJIVGhSIkLrFC3Qg Ek/P8/AA) – TessellatingHeckler

答えて

0

文字列の解釈についてのあなたの前提が正しくありません。文字列を渡すと、文字列のままです。

Function '/a r g 1' 
"$($Args[0])" 
> /a r g 1 
関連する問題