2014-05-01 21 views
1

這工作:如何在循環中使用here文檔?

name="test.txt" 

yap -q << % > $name 
    [experiment_yap], 
    exp1_min(brother,2). 
% 

這不:

for i in 01 02 03 04 05 
do 
    name="test.txt" 

    yap -q << % > $name 
    [experiment_yap], 
    exp1_min(brother,2). 
    % 
done 

我收到線19:語法錯誤:文件

回答

6

它不是在一個循環,這裏有顯著是意外結束。 bash並不真正知道或關心壓痕 - 承認定界符結束時終止字符串必須是在該行的開始,這使得你的循環是這樣的:如果你使用`

for i in 01 02 03 04 05 
do 
    name="test.txt" 

    yap -q << % > $name 
    [experiment_yap], 
    exp1_min(brother,2). 
% 
done 
+3

<< - %',您可以使用製表符(不只是任意的空格)縮進here文檔和分隔符的正文。 (身體無關緊要,只要消費者不關心領先的空白。) – chepner