Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 尝试从gnu make中的命令获取值时出错_Linux_Shell_Makefile_Gnu Make_Gnu - Fatal编程技术网

Linux 尝试从gnu make中的命令获取值时出错

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

我有以下在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 \
        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
?可以简化吗?