news 2026/6/10 0:27:30

makefile中的shell变量语法总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
makefile中的shell变量语法总结

在 Makefile 中,变量的使用规则确实容易让人混淆,下面我来总结一下常见的几种用法及其含义:


1.$(var)${var}

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

  • 示例

    PORT = 8000 start: echo "Port is $(PORT)"
  • 说明

    • $(PORT)是 Makefile 的标准语法,用于获取变量PORT的值。
    • ${PORT}功能相同,只是另一种写法。

2.$$var

  • 用途:在 shell 命令中引用 shell 变量(避免与 Makefile 变量冲突)。

  • 示例

    start-by-uvicorn: @PORT_VAL=$${port:-9608}; \ echo "Using port: $$PORT_VAL"
  • 说明

    • $${port:-9608}是 shell 的语法,表示如果port未定义,则使用默认值9608
    • $$PORT_VAL是为了告诉 Makefile:“这不是 Makefile 变量,而是 shell 变量”,防止 Makefile 尝试解析它。

3.@符号

  • 用途:抑制命令本身的回显(即不让命令本身显示在终端中)。

  • 示例

    start: @echo "Starting application..."
  • 说明

    • 默认情况下,Makefile 会先打印执行的命令,再执行命令。
    • 加上 [@](file:///Users/liujiaqi/Desktop/code/cedongli/waf/python/waf-collect-feature/src/utils/logger.py#L0-L67) 后,只会执行命令,不会打印命令本身。

4.组合使用示例

PORT = 8000 start-by-uvicorn: @PORT_VAL=$${port:-$(PORT)}; \ echo "Using port: $$PORT_VAL"
  • 解释
    • $(PORT):引用 Makefile 中定义的PORT变量(值为8000)。
    • $${port:-$(PORT)}:shell 语法,若 [port](file:///Users/liujiaqi/Desktop/code/cedongli/waf/python/waf-collect-feature/src/config/settings.py#L60-L60) 未定义,则使用$(PORT)的值。
    • $$PORT_VAL:引用 shell 变量PORT_VAL,避免被 Makefile 解析。

总结对比表

语法类型用途
$(var)Makefile引用 Makefile 中定义的变量
$${var}ShellShell 中引用变量并支持默认值
$$varShellShell 中引用变量(避免与 Makefile 冲突)
@commandMakefile抑制命令回显

实际场景建议

  • 如果你在Makefile 规则内部需要引用 Makefile 变量,使用$(var)
  • 如果你需要在shell 命令中操作变量,使用$$var$${var}
  • 如果你不希望命令本身显示在终端中,加上 [@](file:///Users/liujiaqi/Desktop/code/cedongli/waf/python/waf-collect-feature/src/utils/logger.py#L0-L67)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:54:31

顶尖游资的告白:300万变4000万,靠的是这三步选股法

引言:为什么99%的散户都抓不住强势股?想不想每天都能抓到短线强势股,轻松“躺赢”?今天,我就把我一个顶尖游资朋友的“印钞机”心法分享出来。我亲眼见证,他仅凭这一个简单的方法,在去年一年的时…

作者头像 李华
网站建设 2026/6/9 23:15:07

【计算机毕业设计案例】基于springboot的工厂精密设备销售管理系统的设计与实现(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 10:04:41

数据中台在大数据领域的实时数据集成策略

数据中台在大数据领域的实时数据集成策略 关键词:数据中台、实时数据集成、大数据、流式计算、数据仓库、ETL、CDC 摘要:本文深入探讨了数据中台在大数据环境下的实时数据集成策略。我们将从数据中台的基本概念出发,分析实时数据集成的技术挑战,详细介绍主流实现方案,并通…

作者头像 李华
网站建设 2026/6/10 12:33:28

【无人机检测】无人机智能停车位检测系统附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/6/10 12:35:43

网络安全学习网站

很多想自学黑客技术的朋友,很容易走错方向。作为一名11年的资深白帽,给大家推荐7个我自己常用的学习网站,并且都是合法的学习网站,能带你了解到黑客有关的技术,视频,电子书,实践,工具…

作者头像 李华