シェルスクリプトで使用する想定なマクロエンジンm4は、必然としてシェルコマンドの内部実行も可能。
実際のところ
目的であるテンプレートエンジン的な使いかた
引数にファイル名をとり、独自コマンドをパイプで渡して、それをcatでキャッチして実行というながれ
まず、HELLOWORLDという関数を作っておき
$ function HELLOWORLD () { echo -n 1234; }
単純なテキストデータがある状況を想定。
$ cat basetext.txt Hello, World
先ほどのHELLOWORLD関数の出力をm4でうけ処理してみると、こんな塩梅でHelloが消える
$ HELLOWORLD | m4 -D Hello="syscmd(cat)" basetext.txt 1234, World
応用例:
少し複雑なコマンドも実行できる
syscmd(`date --iso-8601|sed s/-/./g') 2022.07.07