次: , 前: Syscmd, 上: UNIX commands


12.2 コマンドの出力を読む

UNIXコマンドの出力をm4に読み込ませたいときは esyscmdを使ってください。

     esyscmd(shell-command)

このマクロはシェルコマンドshell-commandの標準出力の内容に展開されます。

m4はコマンドの実行に先立ち自分の出力バッファをフラッシュします。 shell-commandのデフォルトの標準入力および標準エラー出力は m4のものと同じになります。 shell-commandのエラー出力は展開テキストの一部にはなりません ― m4のエラー出力と一緒に出てくるでしょう。

次の例ではGNU m4ディストリビューションのchecksディレクトリ にいると仮定します。

     define(`vice', `esyscmd(grep Vice ../COPYING)')
     =>
     vice
     =>  Ty Coon, President of Vice
     =>

esyscmdの展開によるテキストの後ろに改行がついている様子に 注意してください。

esyscmdは引数を与えたときだけ認識されます。