Может ли 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
!