前: Sysval, 上: UNIX commands
syscmd
やesyscmd
に指定されたコマンドが出力やその他の目的で
一時ファイルを必要とすることもあるでしょう。
一時ファイルの名前を生成するために組み込みマクロmaketemp
が用意されています。
maketemp(template)
このマクロはtemplateを元に作られる、現時点で存在しないファイルの名前に
展開されます。templateは文字列`XXXXXX'で終らなければなりません。
この6つのX
はファイル名をユニークにするためにm4
のプロセスidを含む
何らかの文字列によって置き換えられます。
maketemp(`/tmp/fooXXXXXX') =>/tmp/fooa07346 maketemp(`/tmp/fooXXXXXX') =>/tmp/fooa07346
例にあるようにmaketemp
を複数回呼び出すと同じ文字列に展開されることが
あります。これは選択の基準がファイルが存在するかどうかだからです。
最初のファイルが作成されていないうちに、maketemp
を次に呼び出すと、
2つのmaketemp
マクロの呼び出しは同じ名前に展開される可能性があります。
maketemp
は引数を与えたときだけ認識されます。