在Makefile中插入shell脚本时,我们(?)使用双美元符号($$)来引用变量。为什么会这样?
for number in 1 2 3 4 ; do \
echo $$number ; \
done
答案 0 :(得分:35)
配方中的变量和函数引用具有相同的语法和 语义到makefile中其他地方的引用。他们也有 相同的报价规则:如果你想要一个美元符号出现在你的 食谱,你必须加倍('$$')。对于像默认shell这样的shell, 使用美元符号来引入变量,保持这一点非常重要 在你的脑海中清楚你要引用的变量是否为a make变量(使用单个美元符号)或shell变量(使用两个 美元符号)。
简而言之:
答案 1 :(得分:0)
不适用于此示例-除非显示的代码是通过$(shell ...)
而不是规则执行的,否则:
启用辅助扩展后,make可能还会在第二个处理阶段中解释双美元本身,如果它出现在条件列表中。 (第一阶段:读取文件,设置变量;第二阶段:查找并调用依赖目标,执行规则)
当带有目标名称的变量仅在文件的后面可用时,它用于允许动态指定依赖关系目标。
请参见https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html。