首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有更好的方法在makefile命令中显示环境变量的值?

是否有更好的方法在makefile命令中显示环境变量的值?
EN

Stack Overflow用户
提问于 2022-11-17 00:34:47
回答 2查看 21关注 0票数 0

我在做特定机器的部署。这些都是用于开发的机器。这种情况可能会导致一些问题,因为部署所需的环境变量可能与用于开发的环境变量不同!

当工程师正在开发时,有一个.zshrc文件是有用的,这些内容包括:

代码语言:javascript
复制
export TFR_RELEASE="my-instance-for-development"
export TFR_DEV="my-instance-for-development"

但是,部署的实例是不同的!

这个项目已经有了一个makefile来帮助简化事情。其中一个make命令是make clean

代码语言:javascript
复制
clean:
    rm -rf .shadow-cljs
    rm -rf node_modules
    rm -rf target
    rm -rf public/js

为了让开发人员知道正在使用的是哪个实例,我决定添加最后两行:

代码语言:javascript
复制
clean:
    rm -rf .shadow-cljs
    rm -rf node_modules
    rm -rf target
    rm -rf public/js
    echo "TFR_DEV" "$(TFR_DEV)"  
    echo "TFR_RELEASE" "$(TFR_RELEASE)"

执行$ make clean后,终端返回:

代码语言:javascript
复制
➜  make clean
rm -rf .shadow-cljs
rm -rf node_modules
rm -rf target
rm -rf public/js
echo "TFR_DEV" "my-instance-for-development"
TFR_DEV my-instance-for-development
echo "TFR_RELEASE" "my-instance-for-development"
TFR_RELEASE my-instance-for-development"

如果在显示相关信息时觉得有点重复的话.因为变量的值是在终端的“提示”和终端的“答案”上计算的。

有没有更好的方法“打印”它?

我的方法并不觉得很优雅。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-17 00:51:19

如果您在收据命令前面加上@,它们将不会出现。只有结果。

代码语言:javascript
复制
clean:
    rm -rf .shadow-cljs
    rm -rf node_modules
    rm -rf target
    rm -rf public/js
    @echo "TFR_DEV" "$(TFR_DEV)"  
    @echo "TFR_RELEASE" "$(TFR_RELEASE)"
票数 1
EN

Stack Overflow用户

发布于 2022-11-17 02:15:04

如果值位于环境中,则可以使用shell变量而不是Make变量:

代码语言:javascript
复制
clean:
    echo "$$TFR_DEV"
    echo "$$TFR_RELEASE"

打印

代码语言:javascript
复制
$ make clean
echo "$TFR_DEV"
my-instance-for-development
echo "$TFR_RELEASE"
my-instance-for-development
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74468843

复制
相关文章

相似问题

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