Command Macro Script で使うコマンド2006年06月27日 06時16分02秒

スクリプトで使えるコマンドは対話的に使えるコマンドはほぼ全て使える。それに、加えてスクリプトでのみ使えるコマンドもある。流石に form を使うコマンドはスクリプトからは少々無理がある。

スクリプトコマンドは、全て & で始まる。&set や &set_string は変数に値を代入する。&if や &then で条件文を作り、&goto や &label で実行の流れを制御できる。

他にも、&display_line と呼ばれる UNIX の echo の様なスクリプトコマンドもある。実は、display_line は別に外部コマンドとしても実装されている。& が付くとスクリプトコマンドが & がないと外部コマンドが使われるらしい。基本的な動作は一緒だ。

スクリプトを書くときに注意しなければいけないことがある。

実は、VOS ではコマンド毎に新しいプロセスが生成されないので、プログラム中でディレクトリを移動した場合、プログラムが終了しても元のディレクトリには戻らない。もし元の位置に戻る必要があるのなら、終了する前に各プログラムが、自ら元の場所に移動する必要がある。

これを忘れると、スクリプトを実行した後に変なディレクトリに移動しているという現象に陥るのである。

また、VOS には UNIX の /tmp の様に、誰でも書き込める一時ファイル置場はない。(process_dir) というディレクトリが各プロセス毎にできるので、そこに書き込むと、途中でスクリプトが異常終了しても、ゴミを残さないですむ。(process_dir) は UNIX の /proc/pid の様な感じだ。

file.cm のように .cm の付いたファイルをコマンドパスの通ったディレクトリ中に置くと、スクリプトは実行できる。#!/bin/sh 等の様なものは必要ない。また、sh file.csh の様に Command Macro のインタプリタを強制的に起動することはできない。