首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile - Subst -不替换变量

Makefile - Subst -不替换变量
EN

Unix & Linux用户
提问于 2019-06-05 13:41:37
回答 1查看 2K关注 0票数 0

我试图运行以下subst命令,将一个字符串/var/jenkins_home替换为另一个/srv/jenkins-slave-1/data,以便使HOST_LOG_DIR中的值从/var/jenkins_home/workspace/ts_myapp_testing_integration-tests变为/srv/jenkins-slave-1/data/workspace/ts_myapp_testing_integration-tests

但是当我运行makefile目标substtest时,HOST_LOG_FILE的值保持不变(请参见屏幕截图)。

代码语言:javascript
复制
WORKSPACE               := "/var/jenkins_home/workspace/ts_myapp_testing_integration-tests"
JENKINS_HOME            := "/var/jenkins_home"
JENKINS_HOME_HOST_PATH  := "/srv/jenkins-slave-1/data"
HOST_LOG_DIR            :=  $(subst $(JENKINS_HOME),$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))

.PHONY: substtest, print_env

substtest: print_env

print_env:
    @echo "WORKSPACE is ${WORKSPACE}"
    @echo "JENKINS_HOME is ${JENKINS_HOME}"
    @echo "JENKINS_HOME_HOST_PATH is ${JENKINS_HOME_HOST_PATH}"
    @echo "HOST_LOG_DIR is ${HOST_LOG_DIR}"][1]][1]

奇怪的是,当我将$(JENKINS_HOME)替换为实际路径值/var/jenkins_home时,

HOST_LOG_DIR := $(subst /var/jenkins_home,$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))

然后它会像预期的那样工作,

我需要修复这个问题,这样它就不需要硬编码的替代。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-06-05 14:16:24

JENKINS_HOME := "/var/jenkins_home“

您应该<#>而不是引用Makefiles中的变量值。这不是shell,引号在任何方面都不是特别的,也不被删除。

代码语言:javascript
复制
WORKSPACE               := /var/jenkins_home/workspace/ts_myapp_testing_integration-tests
JENKINS_HOME            := /var/jenkins_home
JENKINS_HOME_HOST_PATH  := /srv/jenkins-slave-1/data
HOST_LOG_DIR            :=  $(subst $(JENKINS_HOME),$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/523051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档