$${var} ${var} $(var)的区别是什么?
components = apple orange bananas
.PHONY run-fruits
for fruit in $(fruits); do \
DIR=${TOPDIR}/$${fruit} FRUIT=$${fruit} $(MAKE) -C ${TOOLDIR}/makefiles
done如你所知,$(MAKE)是括号,${TOPDIR}和${TOOLDIR}是括号,水果$${fruit}有双元符号。
发布于 2019-11-28 00:26:50
见这里。
$(X)和${X}是等价的。
$$扩展到$,因此$${X}扩展到${X},这是一个有用的技巧,当您想推迟对变量的计算时。
foo:
echo $SHELL_VARIABLE # fails
echo $$SHELL_VARIABLE # works as intended第一个命令失败,因为Make查看$S,计算它并将其扩展为空(除非您已经将S定义为Make变量),并将"echo HELL_VARIABLE“传递给shell。第二个命令可以工作,因为Make将$$转换为$,并将"echo $SHELL_VARIABLE“传递给shell。这也出现在配方模板和二次膨胀中,但这些都是高级主题。
https://stackoverflow.com/questions/59079946
复制相似问题