将makefile自动变量值传递给从make调用的bash函数

将makefile自动变量值传递给从make调用的bash函数,makefile,Makefile,假设我在我的.bashrc中定义了以下函数: foo (){ touch $1 } 我想在makefile中调用此函数,如下所示: %.png : %.tex bash -i -c foo $< %.png:%.tex bash-i-cfoo$< 但这会导致缺少操作数。(错误为“touch:缺少文件操作数””,因此它正在调用touch…)。我见过一些类似问题的解决方案,但它们不适用,因为我需要自动变量$您的问题可能是因为您没有足够的引用。shell-c选项将其

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

foo (){
    touch $1
    }
我想在makefile中调用此函数,如下所示:

%.png : %.tex
    bash -i -c foo $<
%.png:%.tex
bash-i-cfoo$<
但这会导致缺少操作数。(错误为“
touch:缺少文件操作数”
”,因此它正在调用
touch
…)。我见过一些类似问题的解决方案,但它们不适用,因为我需要自动变量
$您的问题可能是因为您没有足够的引用。shell
-c
选项将其脚本作为单个参数

考虑:

$ bash -c echo hi
<prints nothing>

我不能引用bash的参数,因为我需要make来解释
$No您不需要。Make不关心引号。Make甚至不知道如何解释shell脚本来正确处理引用。Make总是扩展配方中的每个
$
,除非它是通过
$
转义的。您需要担心的唯一变量是shell变量,而不是Make变量<代码>$哦,好的,当然,如果我真的从我的makefile中删除了另一个bug,它会工作得很好!(我的测试脚本是
touch
ing依赖项文件,而不是所需的输出,因此看起来好像什么都没有发生。(应该是
foo$@
$ bash -c 'echo hi'
hi