Может ли m4 выполнять пользовательские скрипты bash? - PullRequest
0 голосов
/ 11 декабря 2018

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

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

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

#!/bin/bash

echo "Hello World"

Однако при выполнении m4 для входного файла Iполучить ошибку

sh: 1: mycmd: not found

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

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

1 Ответ

0 голосов
/ 11 декабря 2018

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

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

Обратите внимание ./mycmd!

...