2017-01-04 12 views
2

名前の後ろの理由は何ですか?次のようになぜ「Here Strings」は「Here Strings」と呼ばれていますか?

SS64はPowerShellでここに文字列を説明します

ここに文字列を複数行にまたがることができます引用し、単一または二重引用符で囲まれた文字列です。 一重引用符で囲まれた文字列の式は評価されません。

here-stringのすべての行は、引用符で囲まれていなくても、文字列として解釈されます。

$myHereString = @' 
some text with "quotes" and variable names $printthis 
some more text 
'@ 

答えて

10

それはPowerShellで他の多くの要素と概念のようなUnix形式の殻から借りているので、彼らはPowerShellでこの名前を持っている:

From Wikipedia

ここで文書をに発信Unixシェルであり、sh、csh、ksh、bash、zshなどにあります。その名前が最初に使用された理由、記事は、厳密に語源をカバーするが、この説明に基づいていないためとして

:コンピューティングで

、ここは、ヒアドキュメントを文書化ここにテキストヒアドキュメントhereisここでは、文字列またはここでは、スクリプト)は、ファイルリテラルまたは入力ストリームリテラルです。ソースコードファイルのセクションで、あたかも別のファイルであるかのように扱われます。この用語は、同様の構文を使用し、改行やテキスト内の他の空白(インデントを含む)を保持する、複数行の文字列リテラルの形式にも使用されます。

名前の「ここ」の部分は、「ここ」に(この時点のように)含まれるファイルを指していると思われます。

$myString = 'some text with "quotes" and variable names $printthis 
some more text' 

ここでは、文字列がどこにあるのより良い例を:PowerShellはまたそうのように、単一および二重引用符で囲まれた[string]の両方に直接改行をサポートしていることだけ完全性について


は、それは注目に値します

$myHereString = @' 
some text with "quotes" and variable names $printthis 
some more text 
and my grandma's soup 
'@ 

それはちょうど単一引用符で囲まれた文字列だった場合は、で':あなたは、両方の引用符の種類を必要とするときに便利ですをエスケープする必要があります。

それは、二重引用符で囲まれた文字列だった場合、あなたはあなたは変数展開を望んでいなかった場合は、$をエスケープする必要があると思い"のインスタンスをエスケープする必要があると思います。