将多行python代码包含在Makefile中

时间:2014-10-31 13:49:03

标签: python bash shell makefile

当我正在处理bash脚本并需要编写一个特别复杂的逻辑时,我通常会依赖于使用python,如下所示:

#!/bin/bash

function foo() {
    python << END
if 1:
    print "hello"
END
}

foo

如何在Makefile中做同样的事情?

1 个答案:

答案 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的一些解释:定义SHELLmake知道要运行哪个shell。 ::代表假目标(以及更多);您可以将:替换为实际目标。

关键是运行source并在同一个shell中调用该函数,即在同一行中(因为make为每一行运行不同的shell);这是通过;\在每一行的末尾实现的。