PowerShell: 文字列の使い方、複数行、ヒア文字列
PowerShellで文字列を使う場合は 「"」(ダブルクォーテーション)か 「'」(シングルクォーテーション)で囲みます。 「"」や「'」で囲って記述したものを「文字列リテラル」と言い、 文字列リテラルはそのまま表示したり、変数に代入することができます。
# ダブルクォーテーション $a = "こんにちは" # シングルクォーテーション $b = 'こんにちは'
「"」と「'」はどちらでも好きな方を使えばいいのですが、 変数展開をしたい場合はダブルクォーテーションを使います。 シングルクォーテーションは変数展開されません。
複数行の文字列
文字列中に改行コードを入れて複数行の文字列を作成することもできます。 その場合「`n」(バッククォート+n)を入力します。 PowerShellではエスケープ文字は「`」(バッククォート)を使用します。 「\n」ではないので注意してください。
# `nで改行コード Write-Host("hello`nworld") # 実行結果 hello world
ヒア文字列
複数行の文字列を変数に格納したい場合は、 ヒア文字列を使用すると便利です。 ヒア文字列を使うと自分で改行コード「`n」を記述しなくても 複数行の文字列を作成できます。
ヒア文字列は次のように「@"」で始まり「"@」だけの行で終わります。 ダブルクォーテーションの部分はシングルクォーテーションでも大丈夫です。 違いは先程と同じように変数展開できるかどうかです。
$ss = @" 複数行の 文字列 "@
次のサンプルコードのように、 最初の「@"」の後に改行せずに文字を入力したり、 最後の「"@」の前に文字を入力するとエラーになります。
# エラーになる $ss = @" 複数行の 文字列 "@ # エラーになる $ss = @" 複数行の 文字列 "@
ダブルクォーテーション、シングルクォーテーションを表示する
文字列中にダブルクォーテーションやシングルクォーテーション自体を表示する場合は、 いくつか方法があります。ダブルクォーテーションを表示
- 「"」を2つ重ねて「""」と入力する
- エスケープ文字「`"」(バッククォート + ")を使用する
- 文字列をシングルクォーテーションで囲む
それぞれの方法のコードは次の通りです。
Write-Host "こんにちは""田中""さん" Write-Host "こんにちは`"田中`"さん" Write-Host 'こんにちは"田中"さん' # 実行結果 こんにちは"田中"さん こんにちは"田中"さん こんにちは"田中"さん
シングルクォーテーションを表示
- 「'」を2つ重ねて「''」と入力する
- エスケープ文字「`'」(バッククォート + ')を使用する
- 文字列をダブルクォーテーションで囲む
それぞれの方法のコードは次の通りです。
Write-Host 'こんにちは''田中''さん' Write-Host 'こんにちは`'田中`'さん' Write-Host "こんにちは'田中'さん" # 実行結果 こんにちは'田中'さん エラー発生 こんにちは'田中'さん
2番目の方法はなぜかエラーが発生しました。 「"こんにちは`'田中`'さん"」なら表示されるのですが 「'こんにちは`'田中`'さん'」はエラーになります。 PowerShellのバグなのかどうかはわかりませんが、 「PowerShell Version 5.1」ではエラーになります。 ですから1番目か3番目の方法でシングルクォーテーションを表示させてください。