分配bash变量以使变量内部食谱



是否有一种方法可以将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

最新更新