PowerShell: 変数展開
変数展開とは 「変数部分」を「変数に格納されている値」に置き換えることです。
PowerShellで文字列を扱う場合は「"」ダブルクォーテーションか 「'」シングルクォーテーションを使いますが、 変数展開を行う場合は「"」ダブルクォーテーションを使用します。
変数展開する場合、次の2つの方法があります。
- 変数の前後を半角スペース又は全角スペースで囲む
- 変数名の部分を{}波括弧で囲む
# 1. スペース Write-Host "こんにちは $s さん" # 半角スペースで囲む Write-Host "こんにちは $s さん" # 全角スペースで囲む # 2. {}波括弧 Write-Host "こんにちは${s}さん" # 変数名を{}で囲む # 実行結果 こんにちは 田中 さん こんにちは 田中 さん こんにちは田中さん
実行結果を見てわかるように、 変数の前後にスペースを入れた場合はアウトプットにもスペースが入ります。 変数展開する部分の前後に半角(全角)スペースを入れたくない場合は 「${変数名}」で記述する必要があります。
上記のサンプルコードのダブルクォーテーション部分を シングルクォーテーションに変更した場合、 変数展開されずにそのまま変数名が出力されます。
Write-Host 'こんにちは $s さん' Write-Host 'こんにちは $s さん' Write-Host 'こんにちは${s}さん' # 実行結果 こんにちは $s さん こんにちは $s さん こんにちは${s}さん
ヒア文字列での変数展開
ヒア文字列(ヒアドキュメント) で変数展開したい場合も同じようにダブルクォーテーションを使用し、 「@"」「"@」で囲みます。 次のサンプルコードではヒア文字列を使って $aと$bを変数展開しています。
$a = "田中" $b = "晴れ" $ss = @" こんにちは $a さん 今日の天気は${b}です。 "@ Write-Host $ss # 実行結果 こんにちは 田中 さん 今日の天気は晴れです。