Powershellで引用符付き文字列内にリテラル引用文字を含めるとき、引用文字をエスケープして文字列デリミタではなくリテラルであることを示すにはどうすればよいですか?
Powershellで引用符付き文字列内にリテラル引用文字を含めるとき、引用文字をエスケープして文字列デリミタではなくリテラルであることを示すにはどうすればよいですか?
回答:
から help about_quoting_rules
文字列に二重引用符を表示するには、文字列全体を単一引用符で囲みます。例えば:
'As they say, "live and learn."'
このコマンドの出力は次のとおりです。
As they say, "live and learn."
単一引用符で囲まれた文字列を二重引用符で囲まれた文字列で囲むこともできます。例えば:
"As they say, 'live and learn.'"
このコマンドの出力は次のとおりです。
As they say, 'live and learn.'
Windows PowerShellに二重引用符を文字どおりに解釈させるには、バックティック文字を使用します。これにより、Windows PowerShellは引用符を文字列区切り文字として解釈しなくなります。例えば:
"Use a quotation mark (`") to begin a string."
このコマンドの出力は次のとおりです。
Use a quotation mark (") to begin a string.
単一引用符で囲まれた文字列の内容は文字どおりに解釈されるため、バッククォート文字を使用して、単一引用符で囲まれた文字列でリテラル文字の解釈を強制することはできません。
PowerShellの最近のバージョンでは、一重引用符で囲まれた文字列内の他の引用符をエスケープするためにバックティック文字を使用することはサポートされていません。PowerShellの以前のバージョンでは、バックティックエスケープ文字を使用してhelp about_quoting
、これらのバージョンのPowerShellで利用可能なドキュメントで詳述されているように、単一引用符で囲まれた文字列内の二重引用符文字をエスケープできました。
'As they say, ''live and learn.'''
出力As they say, 'live and learn.'
は、2番目の例と同じです。
Powershellのエスケープ文字は "` "(後方アポストロフィ/墓)です。
これは、引用符と特殊文字をエスケープするために使用できます(たとえば、タブは `t)。
bash
ユーザーを狂気に駆り立てるでしょう。(cmd.exe
エスケープ文字は^
)
単一の「テキスト」なので、リテラルテキストとして扱われ、「\」を使用して特殊文字をエスケープします
例:この文字列:「彼らが言うように、「生きて学ぶ」。」この文字列になります
PowerShell.exe -Command
は、パラメーターで二重引用符を使用して渡そうとしている場合に機能します(技術的には、CMDがエスケープしていますが、コマンドパラメーターでは有効です)。imgur.com/1btjoQW
about_quoting
助けを見つけることができません。powershell v5.1を実行しています。二重引用符のエスケープ、または異なるタイプの引用符のネストは、期待どおりに機能します。