![](/img/trans.png)
[英]How to escape dollar sign on Docker-compose bash script command
[英]What is the meaning of a double dollar sign in bash/Makefile?
在 Makefile 中插入 shell 脚本时,我们必须 (?) 使用双美元符号 ($$) 来引用变量。 为什么?
for number in 1 2 3 4 ; do \
echo $$number ; \
done
根据gnu制作官方文档 :
配方中的变量和函数引用与makefile中其他位置的引用具有相同的语法和语义。 它们也有相同的引用规则:如果你想在你的食谱中出现一个美元符号,你必须加倍它('$$')。 对于像默认shell这样使用美元符号来引入变量的shell,重要的是要清楚地记住要引用的变量是make变量(使用单个美元符号)还是shell变量(使用两个美元符号) )。
简而言之:
$$ 是您当前进程的 PID。
$ ps -ef|grep $$
user 208465 200620 0 10:30 pts/4 00:00:00 bash
$ for number in 1 2 3 4 ; do \
echo $$number ; \
done
208465number
208465number
208465number
208465number
不直接适用于此示例 - 除非显示的代码是通过$(shell ...)
而不是规则执行的:
启用二级扩展后,make可能还会在第二个处理阶段解释双美元本身,当它出现在先决条件列表中时。 (第一阶段:读取文件,设置变量;第二阶段:查找和调用依赖关系目标,执行规则)
当具有目标名称的变量仅在文件中稍后可用时,这用于允许动态指定依赖项目标。
请参阅https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html 。
当你在 shell 中使用echo $$
时,你可能会看到:
echo $$
486
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.