PowerShell: 変数展開

変数展開とは 「変数部分」を「変数に格納されている値」に置き換えることです。

PowerShellで文字列を扱う場合は「"」ダブルクォーテーションか 「'」シングルクォーテーションを使いますが、 変数展開を行う場合は「"」ダブルクォーテーションを使用します。

変数展開する場合、次の2つの方法があります。

  1. 変数の前後を半角スペース又は全角スペースで囲む
  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

# 実行結果
こんにちは 田中 さん  
今日の天気は晴れです。
PowerShell