将makefile中的env var作为可选项传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将makefile中的env var作为可选项传递相关的知识,希望对你有一定的参考价值。

我在执行bash脚本的makefile中有一个命令:

test:
 ./script.sh

该脚本已实现getopts,因此可以像这样调用它:

./script.sh -n 10

什么可以通过以下方式完成bash:

./script.sh ${n:+ -n "${n}"}

但是当我把这个结构放到makefile时它产生空字符串。

test:
 ./script.sh  ${n:+ -n "${n}"}

我不能简单地使用./scipt.sh $(n),因为我需要-n前缀。

谢谢你的任何建议。

答案

$在makefile中有特殊含义,因为it is used for make variable references

你的食谱命令中的${n:+ -n "${n}"}部分正在被make(而不是bash)扩展,这导致一个空字符串,这就是bash收到的:

./script.sh  

然而,您可以通过在其前面添加$来逃避$

test:
 ./script.sh  $${n:+ -n "$${n}"} 

这样,bash将收到以下命令来执行:

./script.sh  ${n:+ -n "${n}"} 

以上是关于将makefile中的env var作为可选项传递的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别