在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
但这看起来很难看。有更好的解决方案吗?
答案 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选项。