← retour aux snippets

m4: préprocesseur de macros minimal mais puissant

Générer du texte/config à partir de macros, includes et définitions conditionnelles.

bash text #m4#macro#template

objectif

Produire des fichiers à partir de gabarits paramétrables, sans langage complet.

code minimal

# template.m4
#define(`APP', `data.pm')
Hello, APP!
# exécution
m4 template.m4 > out.txt

utilisation

# variables d'environnement passées via -D
m4 -DENV=prod - <<'M4' > config.conf
define(`ENV', `__ENV__')dnl
mode=ENV
M4

variante(s) utile(s)

# includes et conditions
m4 - <<'M4'
ifdef(`FEATURE', `enabled', `disabled')
M4

notes

  • dnl supprime les fins de ligne; échappez les quotes avec des backticks/apostrophes.
  • parfait pour générer des confs déterministes.