配方中的GNU make变量和shell变量

问题描述 投票:0回答:1

我对配方中的 make 变量和 shell 变量有点困惑。
由于配方的每一行都被解释为shell,我可以进行shell变量赋值吗? 以下是示例:

.ONESHELL:
all:
    param="hello"
    echo $(param)

//--------------------------------
没有输出...
我知道我们可以使用 eval 来给变量赋值,但它看起来像 make 变量。
我怎样才能执行正常的 shell 变量赋值来保存 shell 命令的返回值?

shell variables makefile gnu recipe
1个回答
2
投票

$(param)
由 GNU make 扩展。要使其通过 shell 扩展,请执行
$${param}
在配方中使用变量

配方中的变量和函数引用与 makefile 中其他地方的引用具有相同的语法和语义。它们也有相同的引用规则:如果您希望美元符号出现在食谱中,则必须将其加倍(“$$”)。对于像默认 shell 这样使用美元符号引入变量的 shell,重要的是要清楚地记住要引用的变量是 make 变量(使用单个美元符号)还是 shell 变量(使用两个美元符号)标志).

© www.soinside.com 2019 - 2024. All rights reserved.