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

时间:2018-08-24 11:37:01

标签: bash makefile gnu-make

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

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前缀。

谢谢您的建议。

1 个答案:

答案 0 :(得分:0)

it is used for make variable references起,$在makefile中具有特殊含义。

您的食谱命令中的${n:+ -n\ "${n}"}部分被make(而不是bash)展开,结果变成一个空字符串,这就是bash收到的内容:

./script.sh  

不过,您可以在$前面加上$,从而逃脱

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

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

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