将多行数据传递给Makefile中的管道

时间:2013-01-16 15:24:06

标签: pipe makefile

在bash文件中,我可以这样写:

my_program << EOF
Some test
More test
A lot of multi-line text
EOF

这将启动my_program可执行文件并通过管道传递三行文本(或更多)。

现在我想在Makefile(GNU make)中这么做。我找不到标准的解决方案,它就像这样解决了:

LaunchMyProgram:
    echo -en "Some test\\nMore test\\nA lot of multi-line text\\n" | my_program

但这看起来很难看。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

是的,这很难看,但你无能为力。 make将每一行作为自己的shell脚本执行,除非该行以\个连续字符结尾;但随后新线被剥夺了。这有点干净,而且你可以做的最好:

SHELL=/bin/bash

all:
    echo -e 'hi\n\
    there\n\
    how\n\
    are\n\
    you' | cat

我已经包含SHELL=/bin/bash行来强制执行特定的echo命令,因为每个shell和每个/bin/echo命令都倾向于接受稍微不同的命令行选项,或者没有命令-line选项。