超まとめ
文字列内で変数を自動展開させる際は、 ${変数名} って書いておくのが安全。
$str1 = "AAA" $str2 = "BBB" $ngCase = "$str1_$str2" #$ngCase = "BBB" $okCase = "${str1}_${str2}" #$okCase = "AAA_BBB"
説明
Powershellの便利機能の文字列内での変数自動展開ですが、変数が変数であると認識できるケースでしか展開されません(当たり前)。
変数は、変数名のうしろに区切り文字に相当する文字がついた時点で変数として認識されるます。例えば、変数名の後ろにピリオド、カンマ、半角スペースなどがついた場合、$から区切り文字までが変数として認識されます。
上記例の”_”は区切り文字に該当しない文字のため、$ngCaseの場合は “$str1_”と”$str2″を結合した結果($str1_は未定義=空文字のため)、$naCaseは”BBB”になります。
こういうのを避けたい場合、${変数名}と書くと、{}の中を変数の名前と認識してくれるので、安心です。