我在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
前缀。
谢谢您的建议。
答案 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}"}