2013-01-16 29 views
1

在bash文件,我可以這樣寫:通多行數據管道Makefile中

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

這將啓動MY-可執行文件,並通過管道傳三行文字(或更多)的給它。

現在我想在Makefile(GNU make)中這麼做。我發現沒有標準的解決方案,它是這樣解決的:

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

但是這看起來很醜。有更好的解決方案嗎?

+0

我不知道這個問題應該在網站上。也許它的位置是在stackoverflow或超級用戶。 – Arenim

回答

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命令都傾向於接受略有不同的命令在線選項,或根本沒有命令行選項。