m4 可以执行用户定义的 bash 脚本吗?

Can m4 execute user defined bash scripts?

m4宏扩展语言可以执行用户定义的bash脚本吗?考虑 m4 文件

define(`FOOBAR', `esyscmd(mycmd)') dnl
FOOBAR

其中 mycmd 是一个 bash 文件,定义在与 m4 文件相同的目录中,看起来像

#!/bin/bash

echo "Hello World"

但是,在输入文件上执行 m4 时出现错误

sh: 1: mycmd: not found

这是否意味着我需要修改某种包含 m4 查找特定命令的目录列表的变量?

我希望能够 运行 awk(甚至 python)脚本并将这些脚本的输出粘贴到相应宏名称的位置。

m4可以执行外部程序。你只忘记了一件事:PATH。请尝试:

define(`FOOBAR', `esyscmd(./mycmd)') dnl
FOOBAR

请注意./mycmd