Qualcuno sa come utilizzare un reindirizzamento del documento qui presente su una ricetta?Ricetta del makefile con un reindirizzamento di questo documento
test:
sh <<EOF
echo I Need This
echo To Work
ls
EOF
non riesco a trovare alcuna soluzione di provare il metodo di barra rovesciata solito (che termina in fondo con un comando in una sola riga).
Rationale:
Ho una serie di ricette multilinea che voglio attraverso un altro comando (per esempio, sh, docker).
onelinerecipe := echo l1
define twolinerecipe :=
echo l1
echo l2
endef
define threelinerecipe :=
echo l1
echo l2
echo l3
endef
# sh as proxy command and proof of concept
proxy := sh
test1:
$(proxy) <<EOF
$(onelinerecipe)
EOF
test2:
$(proxy) <<EOF
$(twolinerecipe)
EOF
test3:
$(proxy) <<EOF
$(threelinerecipe)
EOF
La soluzione mi piacerebbe evitare: trasformare le macro multilinea in singole linee.
define threelinerecipe :=
echo l1;
echo l2;
echo l3
endef
test3:
$(proxy) <<< "$(strip $(threelinerecipe))"
questo funziona (io uso gmake 4.0 e bash come shell di marca) ma richiede cambiare le mie ricette e ho un sacco. Strip rimuove le nuove linee, dalla macro, quindi tutto è scritto in una singola riga.
Il mio obiettivo finale è: proxy := docker run ...
Che ne dici di sh -c ''metti qui i tuoi comandi''? – fanton
Possibile duplicato di [Heredoc in un Makefile?] (Http://stackoverflow.com/questions/5873025/heredoc-in-a-makefile) – e0k
@ e0k Ho aggiunto il contesto –