Jac*_*don 3 bash shell makefile environment-variables
是否可以在Makefile特定部分中“禁用”我的变量扩展?
这是我遇到的问题的一个示例:
print_command:
@echo '$(COMMAND)'
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
$ 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
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
$ 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
Run Code Online (Sandbox Code Playgroud)
是否可以在不使用像这样的双美元的情况下执行此操作:
$ 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
Run Code Online (Sandbox Code Playgroud)
以最简单的形式,我希望转发变量的确切内容COMMAND而不会make弄乱它。
添加一个$$双美元并双引号。
print_command:
@echo "$$COMMAND"
Run Code Online (Sandbox Code Playgroud)
喜欢,
$ export COMMAND='My favourite shell is $SHELL'; make print_command
My favourite shell is $SHELL
Run Code Online (Sandbox Code Playgroud)
How to Use Variables从GNU制作页面签出此页面。
如果仅添加单引号,make则按字面输出变量:-例如,使用
print_command:
@echo '$$COMMAND'
$ export COMMAND='My favourite shell is $SHELL'; make print_command
$COMMAND
Run Code Online (Sandbox Code Playgroud)
因为$在Makefile中带有特殊含义,所以需要转义。如果需要make扩展定义的变量的值,请使用以下value语法:
print_command:
@echo $(value COMMAND)
$ export COMMAND='My favourite shell is $SHELL'; make print_command
My favourite shell is /bin/bash
Run Code Online (Sandbox Code Playgroud)
在上述情况下,环境变量的值扩展为/bin/bash。
| 归档时间: |
|
| 查看次数: |
794 次 |
| 最近记录: |