原文地址:Makefile文件中,两个$的变量变量$$Xxx 与一个$的变量 $Xxx的区别

Makefile 中的变量引用

Makefile 中,$ 符号用于变量替换,但它的使用方式有一些细微的区别:

单个 $ 符号($Xxx

  • 用途:用于引用 Makefile 中定义的变量。

  • 用法$ 后面可以跟变量名,通常用括号或花括号括起来以明确变量名的边界。

  • 示例

    VAR = value
    all:
    echo $(VAR)

    在这个例子中,$(VAR) 会被替换为 value

$ 符号($$Xxx

  • 用途:用于在 Makefile 中传递给 shell 的命令中引用 shell 变量。

  • 用法$$ 会被 make 解析为单个 $,从而在 shell 中使用。

  • 示例

    all:
    echo $$PATH

    在这个例子中,$$PATH 会被 make 解析为 $PATH,从而在 shell 中输出环境变量 PATH 的值。

具体区别

  • $Xxx:用于 Makefile 变量替换。make 会在执行命令之前将其替换为变量的值。
  • $$Xxx:用于传递给 shell 的命令中引用 shell 变量。make 会将 $$ 转换为 $,从而在 shell 中使用。

例子

假设你有一个 Makefile 如下:

VAR = Hello

all:
# 使用 Makefile 变量
echo $(VAR)
# 使用 shell 变量
echo $$USER
  • echo $(VAR):make 会将 $(VAR) 替换为 Hello,然后执行 echo Hello
  • echo $$USER:make 会将 $$USER 转换为 $USER,然后 shell 会替换 $USER 为当前用户的用户名。

总结

  • 使用 $ 来引用 Makefile 中的变量。
  • 使用 $$ 来引用 shell 中的变量,以确保在传递给 shell 时保留单个 $ 符号。

随机推荐

  1. 本地图片上传服务器返回在线地址接口 - file - input -修改头像-带预览功能- 然后使用cropperjs 进行裁剪

    说明:上传的图片是 file 类型 ,核心就是获取图片文件(file类型的) : 实现一:使用 vant2 的图片加载组件 ,选择文件后会触发afterRead方法 ,参数 file 就是文件列表fi ...

  2. 0606-nn.functional

    0606-nn.functional 目录 一.nn.functional 和 nn.Module 的区别 二.nn.functional 和 nn.Module 结合使用 pytorch完整教程目录 ...

  3. Cloth Simulation with Root Finding and Optimization

    目录 0 前言 1 Implicit Method 1.1 Root-finding 1.2 Optimization 1.3 Insight 2 Newton-Raphson Method 3 Ma ...

  4. myBatis插入操作获取不到返回的自增id问题

    myBatis插入操作后想返回自增 id 有多种方式 其中一种使用率较高的就是: 在<insert></insert> 标签中添加 useGeneratedKeys 和 key ...

  5. Shell之根据关键字符串替换文件中的行

    KEY="所要搜索的关键字符串"FullPath=所要搜索的文件的路径str="要替换行的字符串"     根据关键字符串定位行号:line=`sed -n ' ...

  6. TextIn ParseX文档解析SDK工具新增Java版本

    TextIn ParseX通用文档解析是一款大模型友好的解析工具,支持将pdf文档.jpg.img图像等文件快速转换为markdown格式,支持各类表格.公式解析,帮助大语言模型的数据清洗和文档问答任 ...

  7. PXI板卡的封装和接口形式

    PXI模块 PXI标准同时定义了3U和6U模块适用的机械尺寸与连接器形式.3U模块在模块底部安装有一个助拔手柄.在顶部和底部通过螺钉固定,底部的固定螺钉部分隐藏在助拔手柄中.占用超过一个槽位的模块可以 ...

  8. 【一步步开发AI运动小程序】五、帧图像人体识别

    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...

  9. php 版本升级后需要对代码进行兼容性检测

    来到需要检测代码的目录下 需要提前安装 docker 执行 docker run --rm -v $(pwd):/app vfac/php7compatibility 7.3 . --ignore=v ...

  10. core-js版本过低,需要更新但是更新失败的原因

    ore-js@2.6.12: core-js@.3 is no longer maintained and not recommended for usage due to the number of ...