是否有一种方法可以将bash变量捕获到配方内部的变量中。我正在尝试这样的人:
all:
VER=$$(cat file.txt) && echo This is $${VER}
foo=$${VER}
echo Hey $$(foo) !
我有一个错误:
VER=$(cat file.txt) && echo This is ${VER}
foo=${VER}
This is 100 foo=100
echo Hey $(foo) !
/bin/sh: 1: foo: not found
Hey !
我认为 VER
bash变量已正确捕获,但我想将其捕获到配方中的变量?
简短的答案是,您真的不应该这样做,而且几乎是不可能的。如果您告诉我们您实际想做的事情,我们可以为您提供更多帮助...对我来说这是一个XY问题。
gnu make(但不是其他版本的制造(确实有一些警告的方式。但是,我重申这是一个非常糟糕的主意,您不应该这样做。但是,这将起作用:
all:
$(eval VER := $$(shell cat file.txt))
echo This is $(VER)
一个警告是,在运行食谱的其他任何部分之前,都会发生这种情况。因此,例如,这行不通:
all: clean
echo hello > file.txt
$(eval VER := $$(shell cat file.txt))
echo This is $(VER)
clean: ; rm -f file.txt
在开始食谱的任何部分之前,都调用eval
。