当我正在处理bash脚本并需要编写一个特别复杂的逻辑时,我通常会依赖于使用python,如下所示:
#!/bin/bash
function foo() {
python << END
if 1:
print "hello"
END
}
foo
如何在Makefile中做同样的事情?
答案 0 :(得分:0)
您可以编写一个包含您的功能的bash脚本,例如myscript.sh
:
#!/bin/bash
foo() {
python << END
if 1:
print "hello $1"
END
}
现在这里是Makefile
:
SHELL = /bin/bash
mytarget ::
@source myscript.sh ;\
foo world
最后输入你的终端:
$ make mytarget
hello world
关于Makefile
的一些解释:定义SHELL
让make
知道要运行哪个shell。 ::
代表假目标(以及更多);您可以将:
替换为实际目标。
关键是运行source
并在同一个shell中调用该函数,即在同一行中(因为make
为每一行运行不同的shell);这是通过;\
在每一行的末尾实现的。