首页 > 解决方案 > 将makefile自动变量值传递给从make调用的bash函数

问题描述

假设我在我的 中定义了以下函数.bashrc

foo (){
    touch $1
    }

我想在 makefile 中调用这个函数,如下所示:

%.png : %.tex
    bash -i -c foo $<

但这抱怨缺少操作数。(错误是“ touch: missing file operand”,所以它正在调用touch......)。我已经看到了一些类似问题的解决方案,但它们并不适用,因为我需要将自动变量$<(或者更确切地说,它的值)作为参数传递给 shell 脚本。

我知道我可以解决这个问题(例如,将函数批发复制到 makefile 中),但我很想知道如何在 makefile 中解决我的问题。

标签: makefile

解决方案


您的问题可能是因为您没有足够的报价。shell-c选项将其脚本作为单个参数

考虑:

$ bash -c echo hi
<prints nothing>

相对:

$ bash -c 'echo hi'
hi

推荐阅读