Может ли m4 выполнять пользовательские скрипты bash?

Может ли язык макроразложения m4 выполнять пользовательские скрипты bash? рассмотреть файл m4

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

где mycmd - это файл bash, определенный в том же каталоге, что и файл m4, который выглядит как

#!/bin/bash

echo "Hello World"

Однако при выполнении m4 для входного файла я получаю сообщение об ошибке

sh: 1: mycmd: не найдено

Означает ли это, что мне нужно изменить какую-то переменную, содержащую список каталогов, где m4 ищет определенные команды?

Я надеюсь, что смогу запускать скрипты awk (или даже python) и вставлять вывод этих скриптов вместо соответствующего имени макроса.

1 ответ

Решение

m4 может выполнять внешние программы. Вы забыли только одну вещь: PATH, Пожалуйста, попробуй:

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

пожалуйста, обратите внимание ./mycmd!

Другие вопросы по тегам