【发布时间】:2021-10-14 23:56:38
【问题描述】:
-
正在尝试将基本 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.@PATH@.t%.log endif export $(WHAT1_WHERELOG_VAR)查询: 一种。在这@PATH@.log 代表什么?是否选择默认的环境变量 PATH ? 湾。那么 WHAT1_WHERELOG_VAR 的最终值是多少,是 export ALOHA_WHERE_FILENAME = mac.@PATH@.log 吗??
-
以下是基于上述 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.@PATH@.t%.log
fi
要使用的 @PATH@ 的 shell 等效项是什么??
请澄清上述问题。让我知道错过了什么?谢谢。
【问题讨论】:
-
为什么?尝试实现所有依赖检查将变得非常复杂。
-
您使用的是哪个版本的
make?如果那是某种变量引用,那么它绝对不是 POSIX 指定的东西,也不是我在 GNUmake文档中可以找到的任何东西。 -
@Barmar 所以留下@PATH@.log 变量,一般来说如何添加一个变量导出设置,就像在 Make into shell 中所做的那样?
-
@chepner 不确定 make 版本。只是一个想要尝试/转换为 shell 的现有代码及其需要。
-
@Vimo 我认为您对
export命令的翻译是正确的。