Linux 尝试从gnu make中的命令获取值时出错
我有以下在makegnu文件上运行的代码Linux 尝试从gnu make中的命令获取值时出错,linux,shell,makefile,gnu-make,gnu,Linux,Shell,Makefile,Gnu Make,Gnu,我有以下在makegnu文件上运行的代码 apps := $(shell tbd run apps) apps := $(subst ],,$(subst [,,$(app))) 现在我想打印应用程序值,并尝试使用 @echo $(app) 我犯了个错误 start: apps := $(shell tbd run apps) apps := $(subst ],,$(subst [,,$(apps))) build: @for app in $(apps) ; do
apps := $(shell tbd run apps)
apps := $(subst ],,$(subst [,,$(app)))
现在我想打印应用程序值,并尝试使用
@echo $(app)
我犯了个错误
start:
apps := $(shell tbd run apps)
apps := $(subst ],,$(subst [,,$(apps)))
build:
@for app in $(apps) ; do \
bsd start $$app ; \
done
Makefile:12:**命令在第一个目标之前开始。停止。
更新:
目前我的代码是
apps := $(shell tbd run apps)
apps := $(subst ],,$(subst [,,$(apps)))
build:
@for app in $(apps) ; do \
bsd start $$app ; \
done
如果我像这样尝试,我会出错
start:
apps := $(shell tbd run apps)
apps := $(subst ],,$(subst [,,$(apps)))
build:
@for app in $(apps) ; do \
bsd start $$app ; \
done
如果你只是想打印一些东西,而不考虑任何规则,那么使用函数
$(info $(app))
您不能有意义地将Makefile函数调用放在shell调用中。我猜你真的只是在找
build:
tbd run apps \
| sed 's/\[//;s/\]//' \
| xargs -n 1 bsd start
@tripleee可能重复-不一样,我尝试了
$app
(如帖子中的答案),但没有成功相同的错误,有什么想法?不是公认的答案;另一个。@tripleee-现在也试试吧,我不明白,但我还是看不到答案value@tripleee-完成,我已经更新了,但问题是当我把它放在配方中时,我又出现了一个错误,如果我想在其他配方中使用应用程序值,我应该怎么做?顺便说一句,我看不到错误,但我也看不到值。你认为还可能缺少什么?这表明$(shell tbd run apps)
的输出是一个空字符串。不是:)我应该像这样检查它吗@echo$(info$(app))
您如何知道它不是空的?尝试将$(info app='$(app)
放在makefile中app:=$(shell tbd run apps)
之后的一行。你看到任何输出吗?不,你不能在你的<代码> MaultFrase<代码>中运行shell命令,它必须是配方的一部分;这就是错误消息的意思,这就是指定副本告诉您的。谢谢:)我需要的是获取应用程序列表并在其上循环运行,这是可行的,除非我想打印估价员我不明白这应该如何工作。您能提供完整的代码吗?这是否替换了我的更新中的所有代码?1+感谢您的帮助:)这是一个完整的生成文件,用于替换您的问题中的代码,是的。对不起,什么是bsd start
?可以简化吗?