我正在使用 makefile 开发 gitlab 管道。在 yaml 文件中,环境变量定义为 $VAR = 'var' (例如),但在 makefile 中它们被引用为 $(VAR)。
我尝试通过管道中的 echo 打印到命令行,看看它们是否相同。当我这样做时,$VAR 按预期打印了“var”,但 $(VAR) 打印了 VAR:找不到命令。
两者有区别吗?或者它们在 yaml 和 makefile 中实际上是相同的,但我误用了 echo?
谢谢!
您滥用了 echo。
$(..)
是在 Makefile 规则中应用 macros
(变量)的语法之一,但在命令行 (bash
) $(...)
是命令扩展,并将评估内容。如果您尝试在菜谱中执行 echo $(VAR)
,就会发生这种情况,因为 VAR
不是命令。在菜谱中,如果你想要变量扩展,你可能应该这样做 ${VAR}