【发布时间】:2019-02-11 09:50:52
【问题描述】:
我在makefile 中使用以下命令
apps := $(shell fzr provide apps )
apps := $(subst ],,$(subst [,,$(apps)))
在命令中即时获取值数组
并从中删除数组[],
我想在我的终端中运行这个命令,我使用以下命令
fzr provide apps | (subst ],,$(subst [,,$(apps))) | $(apps)
我得到了错误
bash: apps: command not found
bash: apps: command not found
bash: subst: command not found
bash: subst: command not found
我在这里错过了什么?
如果我只运行
fzr provide apps
我知道了,这行得通
[app1 app2 app3]
想法是检查命令
apps := $(subst ],,$(subst [,,$(apps)))
适用于 mac,但在 windows 中不是...
【问题讨论】:
-
您是否尝试在 Windows 上运行此命令?你是如何在那里设置
bash的? Windows 有自己的命令行语言(实际上有两种),但默认情况下bash不是其中之一。 -
@JennyM :错误信息的意思是,你想执行一个名为
apps的命令,并且在你的PATH中列出的任何目录中都没有这个名字的可执行文件,也不是一个函数或别名。作为第一步,我将在命令执行时调查 PATH 的值,并验证该文件是否存在并且是否设置了 x 位。 -
@JennyM :除此之外,即使它们是 PATH 中同名的命令,
$(apps)表达式也有点不寻常:这意味着 调用命令 apps,并将该命令的标准输出视为新命令的名称,接下来调用该命令并接收管道的输入 ...您确定这是您想要做的吗?
标签: linux bash makefile gnu-make