gpt4 book ai didi

bash - Makefile 环境变量中的美元

转载 作者:行者123 更新时间:2023-11-29 09:23:10 24 4
gpt4 key购买 nike

是否可以在我的 Makefile 中为特定部分“禁用”变量扩展?

这是我遇到的问题的示例:

print_command:
@echo '$(COMMAND)'

这是我得到的输出:

$ export COMMAND='My favourite shell is $SHELL'
$ make print_command
My favourite shell is HELL
$ make print_command COMMAND='Welcome to $SHELL'
Welcome to HELL

我想得到的是:

$ export COMMAND='My favourite shell is $SHELL'
$ make print_command
My favourite shell is $SHELL
$ make print_command COMMAND='Welcome to $SHELL'
Welcome to $SHELL

是否可以在不使用像这样的双倍美元的情况下做到这一点:

$ export COMMAND='My favourite shell is $$SHELL'
$ make print_command
My favourite shell is $SHELL
$ make print_command COMMAND='Welcome to $$SHELL'
Welcome to $SHELL

在最简单的形式中,我希望转发变量 COMMAND 的确切内容,而无需 make 对其进行修改。

最佳答案

添加一个 $$ 双美元并用双引号引起来。

print_command:
@echo "$$COMMAND"

喜欢,

$ export COMMAND='My favourite shell is $SHELL'; make print_command
My favourite shell is $SHELL

看看这个 How to Use Variables来自 GNU 制作页面的页面。

如果您只是添加一个单引号,make 会直接打印出变量:-例如与

print_command:
@echo '$$COMMAND'
$ export COMMAND='My favourite shell is $SHELL'; make print_command
$COMMAND

因为 $ 在 Makefile 中有特殊含义,需要转义。如果您需要 make 来扩展定义的变量的值,请使用 value 语法作为

print_command:
@echo $(value COMMAND)
$ export COMMAND='My favourite shell is $SHELL'; make print_command
My favourite shell is /bin/bash

在上面的例子中,环境变量的值被扩展到/bin/bash

关于bash - Makefile 环境变量中的美元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38769390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com