Pages

2012/05/14

[PowerShell] 文字列出力とコマンドモード・式モードの解釈

PowerShell で文字列を出力する際には、 PowerShell のクセを把握しておく必要がある。
Write-Host "ho" + "ge"
# 出力結果
# ho + ge

Write-Host "ho" + "ge" -foregroundcolor red
# 出力結果
# ho + ge (文字色が変更される)
Write-Host は、改行が入らない。
Write-Output "ho" + "ge"
# 出力結果
# ho
# +
# ge
echo "ho" + "ge"
# 出力結果
# ho
# +
# ge
Write-Output と echo は改行が入る。
改行の有無というよりも、コマンドモードとして解釈されていることを理解しなければならないらしい。しかし、以下の書き方では式モードとして解釈される。
Write-Host ("ho" + "ge")
# 出力結果
# hoge
 $hoge = "ho" + "ge"
 Write-Host $hoge
 Write-Output $hoge
 echo $hoge
 # 出力結果
 # hoge
このような書き方だと式モードとして解釈され、すべて同じ出力となる。

コマンドモード (command mode) と式モード (expression mode)

コマンドモードと式モードというのは、ちょっと複雑だ……。
  • コマンドモード
    文字、「&」 (アンパサンド) 、「 . 」 (ピリオド) で開始。その後に空白、文字が続く場合。
  • 式モード
    数値、変数、引用符で囲まれた文字列の場合。
Related Posts Plugin for WordPress, Blogger...