makefile中的shell變量語法及用法總結(jié)
更新時(shí)間:2026年02月11日 09:33:55 作者:serve the people
在 Makefile 中,變量的使用規(guī)則確實(shí)容易讓人混淆,下面我來總結(jié)一下常見的幾種用法及其含義,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
在 Makefile 中,變量的使用規(guī)則確實(shí)容易讓人混淆,下面我來總結(jié)一下常見的幾種用法及其含義:
1.$(var)或${var}
- 用途:引用 Makefile 中定義的變量。
- 示例:
PORT = 8000
start:
echo "Port is $(PORT)"- 說明:
$(PORT)是 Makefile 的標(biāo)準(zhǔn)語法,用于獲取變量PORT的值。${PORT}功能相同,只是另一種寫法。
2.$$var
- 用途:在 shell 命令中引用 shell 變量(避免與 Makefile 變量沖突)。
- 示例:
start-by-uvicorn:
@PORT_VAL=$${port:-9608}; \
echo "Using port: $$PORT_VAL"- 說明:
$${port:-9608}是 shell 的語法,表示如果port未定義,則使用默認(rèn)值9608。$$PORT_VAL是為了告訴 Makefile:“這不是 Makefile 變量,而是 shell 變量”,防止 Makefile 嘗試解析它。
3.@符號
- 用途:抑制命令本身的回顯(即不讓命令本身顯示在終端中)。
- 示例:
start:
@echo "Starting application..."- 說明:
- 默認(rèn)情況下,Makefile 會先打印執(zhí)行的命令,再執(zhí)行命令。
- 加上 [@](file:///Users/liujiaqi/Desktop/code/cedongli/waf/python/waf-collect-feature/src/utils/logger.py#L0-L67) 后,只會執(zhí)行命令,不會打印命令本身。
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 解析。
總結(jié)對比表
| 語法 | 類型 | 用途 |
|---|---|---|
$(var) | Makefile | 引用 Makefile 中定義的變量 |
$${var} | Shell | Shell 中引用變量并支持默認(rèn)值 |
$$var | Shell | Shell 中引用變量(避免與 Makefile 沖突) |
@command | Makefile | 抑制命令回顯 |
實(shí)際場景建議
- 如果你在 Makefile 規(guī)則內(nèi)部 需要引用 Makefile 變量,使用
$(var)。 - 如果你需要在 shell 命令中操作變量,使用
$$var和$${var}。 - 如果你不希望命令本身顯示在終端中,加上 [@](file:///Users/liujiaqi/Desktop/code/cedongli/waf/python/waf-collect-feature/src/utils/logger.py#L0-L67)。
到此這篇關(guān)于makefile中的shell變量語法總結(jié)的文章就介紹到這了,更多相關(guān)makefile shell變量語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shell腳本之判斷輸入?yún)?shù)是否為整數(shù)值的實(shí)例
今天小編就為大家分享一篇shell腳本之判斷輸入?yún)?shù)是否為整數(shù)值的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
關(guān)于SSH 遠(yuǎn)程執(zhí)行命令你要知道的二三事
SSH 是 Linux 下進(jìn)行遠(yuǎn)程連接的基本工具,但是如果僅僅用它來登錄那可是太浪費(fèi)啦!SSH 命令可是完成遠(yuǎn)程操作的神器啊,下面這篇文章主要給大家介紹了關(guān)于SSH 遠(yuǎn)程執(zhí)行命令的一些相關(guān)資料,需要的朋友可以參考下。2017-07-07
Shell常見知識 方便想學(xué)習(xí)linux shell的彭玉
本文給大家介紹了一些Shell小知識,供參考學(xué)習(xí)2013-01-01

