Bash 如何从makefile打印行中的每个元素?

Bash 如何从makefile打印行中的每个元素?,bash,makefile,Bash,Makefile,我在测试条件的地方做了一个foreach,如果没有完成,我应该为每行的每个变量打印一条错误消息 $(foreach file,$(SOURCES),$(if $(shell grep "aaa" "$(file)"),,@echo "" WARNING in: $(file))) 我编写了这段代码,但它是在一行中打印所有内容(警告输入:x警告输入:x…),我想像这样打印它: 警告: x x…您可能需要删除@并添加隐藏 $(foreach file,$(SOURCES),$(if $(shell

我在测试条件的地方做了一个foreach,如果没有完成,我应该为每行的每个变量打印一条错误消息

$(foreach file,$(SOURCES),$(if $(shell grep "aaa" "$(file)"),,@echo "" WARNING in: $(file)))
我编写了这段代码,但它是在一行中打印所有内容(警告输入:x警告输入:x…),我想像这样打印它:

警告:

x


x…

您可能需要删除
@
并添加
隐藏

$(foreach file,$(SOURCES),$(if $(shell grep "aaa" "$(file)"),,echo "" WARNING in: $(file);))
因此,if语句中的命令将扩展为:

echo "" WARNING in: XXX; echo "" WARNING in: XXX;
  WARNING in: XXX
  WARNING in: XXX
为了

警告:XXX

@$(foreach file,$(SOURCES),$(if $(shell grep "aaa" "$(file)"),,echo "" WARNING in: $(file);))
警告:XXX

@$(foreach file,$(SOURCES),$(if $(shell grep "aaa" "$(file)"),,echo "" WARNING in: $(file);))

因为一行前面的@正在取消生成文件的回显。

foreach
不是bash中的名称。我想知道你是如何执行的。你也需要在一行中执行它吗?我真的不知道它在后台是如何工作的,这是我在一个makefile中执行它的唯一方法,我在一个makefile中执行:。假的:test test:$…我错过了你在
makefile
中使用它的消息。这里有一些信息。您可能还想检查
c-shell中的每个函数是否有删除第一行打印内容的方法?如果
文件的编号不止一个,我认为
@
不可能存在。它将被视为无效命令。