2010-12-04 83 views
1

即使设置SHELL来砸代替SH之后,下面不工作:的Makefile while循环

doc: 
    while read line; do \ 
     eval echo "$$line" > $(DOC) \ 
    done < $(DOC).templ 

/bin/bash: -c: line 3: syntax error: unexpected end of file 

我试图做的是有使用bash参数推导和这样的模板文件($()${}),并在编译时“构建”它。有一个更好的方法吗?

回答

4

你缺少之前完成分号:

doc: 
    while read line; do \ 
     eval echo "$$line" > $(DOC); \ 
    done < $(DOC).templ 
+0

啊,谢谢!尽管现在输出文件是空的。编辑:没关系,只好用>>来追加而不是>。再次感谢! – dav 2010-12-04 19:35:16

2

这个答案也许到了晚期;-),但我想另外一个问题是,你的输出重定向是在错误的位置:

doc: 
    while read line; do \ 
     eval echo "$$line"; \ 
    done < $(DOC).templ > $(DOC)