試圖將基本的 Makefile 轉換為等效的 shell,但在一些基礎知識中迷失了方向。
下面是Makefile中的一段代碼
WHAT1_UC := ALOHA WHAT1_NUM := 1 WHAT1_WHERELOG_VAR = $(WHAT1_UC)_WHERE_FILENAME ifeq ($(strip $(WHAT1_NUM)), 1) $(WHAT1_WHERELOG_VAR) = mac.@PATH@.log else $(WHAT1_WHERELOG_VAR) = $(RLDIR)/mac.@[email protected]%.log endif export $(WHAT1_WHERELOG_VAR)查詢:@[email protected] 代表什么?它是否選擇了默認的環境變數 PATH ?灣 那么 WHAT1_WHERELOG_VAR 的最終值是多少,是 export ALOHA_WHERE_FILENAME = mac.@[email protected] 嗎??
下面是一段基于上述 Make 代碼嘗試的 shell 代碼,但在復制等效代碼時迷路了。
WHAT1_UC="ALOHA"
WHAT1_NUM=1
WHAT1_WHERELOG_VAR=${WHAT1_UC}_WHERE_FILENAME
if [ $WHAT1_NUM == 1 ]; then
export ${WHAT1_WHERELOG_VAR}=mac@$PATH@.log
else
export ${WHAT1_WHERELOG_VAR}=${RLDIR}/mac.@[email protected]%.log
fi
要使用的@PATH@ 的shell 等效項是什么?
請澄清上述疑問。讓我知道錯過了什么?謝謝。
uj5u.com熱心網友回復:
查詢:@[email protected] 代表什么?
在 POSIX 或 GNU 中make,@[email protected] 代表 @[email protected]。但是@PATH@ 部分可能不是故意的——它具有占位符的外觀,該占位符旨在由單獨的程式填充,例如autoconf,作為生成您正在查看的生成檔案的一部分。
或者,這可能是打算在構建程序中替換掉。
它是否選擇了默認的環境變數 PATH ?
不,它在我知道的任何 makefile 方言中都沒有特殊含義。
灣 那么 WHAT1_WHERELOG_VAR 的最終值是多少,
它是 ALOHA_WHERE_FILENAME。
它是匯出 ALOHA_WHERE_FILENAME = mac.@[email protected] 嗎??
編號$(WHAT1_WHERELOG_VAR)并${WHAT1_WHERELOG_VAR}擴展到變數的值WHAT1_WHERELOG_VAR。它們與設定該變數的值無關。
要使用的@PATH@ 的shell 等效項是什么?
是的@PATH@,這對 shell 沒有比對 更有意義make。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323994.html
下一篇:如何在子字串列上進行grep
