Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

m4でシェルコマンドを実行するには"syscmd"

シェルスクリプトで使用する想定なマクロエンジンm4は、必然としてシェルコマンドの内部実行も可能。

実際のところ


目的であるテンプレートエンジン的な使いかた
引数にファイル名をとり、独自コマンドをパイプで渡して、それをcatでキャッチして実行というながれ

$ function HELLOWORLD () {  echo -n 1234; }

$ cat basetext.txt
Hello, World
$ HELLOWORLD | m4 -D Hello="syscmd(cat)" basetext.txt
1234, World

少し複雑なコマンドも実行できる

syscmd(`date --iso-8601|sed s/-/./g')
2022.07.07