将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作为可选项传递的主要内容,如果未能解决你的问题,请参考以下文章