Code Aquarium

minazoko's blog -*- 水底のブログ -*-

(PowerShell)複数行コメントはネスト不可

PowerShellの複数行コメントは <# で始まり #> で終わります。

ここはコード

<#
ここはコメント
ここはコメント
ここはコメント
#>

ここはコード

ネストは一見できてそうに見えるけど、できません。

ここはコード
<#                 -- コメント開始
ここはコメント
<#                 -- ただのコメント
ここはコメント
ここはコメント
ここはコメント
#>                #-- コメント終了
ここはコード
#>                 -- ???

ここはコード

PowerShellのパーサはネストした<# #> の対応関係を見てくれるわけではなく、<# で開いた後、最初に現れた #> をコメントの終端とみなします。C の /* */ と同じですね。
ただ、Cの場合、上のコードの (-- ???)と書いた行が「開始の無いコメント終端」としてエラーになるのですが、PowerShellのコメント終端は単独でもエラーにならないんですね。なぜなら # で始まる行はラインコメントになるから...

#>

これ単独でも、ただのコメント行なんですね。
という訳で、

<#

<#

#>

ここ! 実行されるよ!
#>

コメントアウトしたつもりが、やばいコード実行されちゃった!
ってならないようにご注意ください。