[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)

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

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック