Makefile while 循环

发布于 2024-10-05 15:42:29 字数 324 浏览 3 评论 0原文

即使将 SHELL 设置为 bash 而不是 sh 后,以下内容也不起作用:

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

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

我想做的是拥有一个包含 bash 参数理解的模板文件,例如 ($(), $ {})并在编译时“构建”它。有更好的方法吗?

Even after setting SHELL to bash instead of sh, the following does not work:

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

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

What I'm trying to do is have a template file with bash parameter comprehensions and such ($(), ${}) and "build" it at compile time. Is there a better way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寂寞美少年 2024-10-12 15:42:29

完成之前您缺少一个分号:

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

You are missing a semicolon before done:

doc:
    while read line; do \
      eval echo "$line" > $(DOC); \
    done < $(DOC).templ
唱一曲作罢 2024-10-12 15:42:29

这个答案可能会迟到;-),但我认为另一个问题是您的输出重定向位于错误的位置:

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

This answer might come to late ;-), but I think another problem is that your output redirection is in the wrong position:

doc:
    while read line; do \
      eval echo "$line"; \
    done < $(DOC).templ > $(DOC)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文