gitlab yaml 和 makefile 中的 $VAR 和 $(VAR) 有什么区别

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

我正在使用 makefile 开发 gitlab 管道。在 yaml 文件中,环境变量定义为 $VAR = 'var' (例如),但在 makefile 中它们被引用为 $(VAR)。

我尝试通过管道中的 echo 打印到命令行,看看它们是否相同。当我这样做时,$VAR 按预期打印了“var”,但 $(VAR) 打印了 VAR:找不到命令。

两者有区别吗?或者它们在 yaml 和 makefile 中实际上是相同的,但我误用了 echo?

谢谢!

makefile gitlab-ci.yml
1个回答
0
投票

您滥用了 echo。

$(..)
是在 Makefile 规则中应用
macros
(变量)的语法之一,但在命令行 (
bash
)
$(...)
是命令扩展,并将评估内容。如果您尝试在菜谱中执行
echo $(VAR)
,就会发生这种情况,因为
VAR
不是命令。在菜谱中,如果你想要变量扩展,你可能应该这样做
${VAR}

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