解析モード
Power Shellのスクリプト解析には、「コマンドモード」と「式モード」があります。
- 式モード
- スクリプトを「最上位レベル言語として解析」します。
- 「2+2」や「"aaa"」などは式として(一般的な感覚からして普通に)評価されます。
- コマンドモード
- シェル内でのコマンド呼び出しのようにスクリプトを評価します。
- 以下を除いた全てが「文字列」として扱われます。
- 変数
- 括弧内で括られた文字列
具体的には、「3*3」というスクリプトがあった場合、
- 式モードでは、整数の「9」
- コマンドモードでは、文字列の「"3*3"」
と評価されます。
PS C:\> 3*3 | echo # この場合、「3*3」は式モードで評価された後、echoに渡る。 9 PS C:\> echo 3*3 # この場合、「3*3」はコマンドモードで評価され、echoに渡る。 3*3
モードの切り替えルール
どのモードで解析を行なうかは、スクリプトの文字で決まります。クイックリファレンスによると、ルールは以下の通り。
- 文字、& (アンパサンド)、または . (ピリオド) で行が開始され、その後に空白または文字が続く場合 → コマンドモード
- トークンが数値、変数、または引用符で囲まれた文字列の場合 → 式モード
コマンドモードの一部を式モードで評価したい
括弧で括られた文字列は、個別にモードの判定が行なわれます。なので、コマンドモードでも、式モードで評価される文字列を「()」で括るとそこだけ式モードにできます。
PS C:\> echo (3*3) 9 PS C:\> echo (3*3)*3 9 *3 PS C:\> echo ((3*3)*3) 27 PS C:\> echo pwd pwd PS C:\> echo (pwd) Path ---- C:\