前: 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は引数を与えたときだけ認識されます。