在Makefile中的shell脚本行中重定向输出

时间:2015-07-24 13:01:30

标签: shell makefile

我试图找出makefile中某个特定行正在做什么:

foo: smth_foo_depends_on
    ...
    @echo $< | bar >> $@
    ...

我特别想知道:

  • 为什么我们在@;
  • 之前写echo
  • $<意味着什么;
  • 为什么我们输出$@中的内容,据我所知,这是给脚本的参数列表?我们为什么要修改它?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

为什么我们在@之前写echo

Source:这样做是为了抑制食谱中某一特定行的回显

  

$<是什么意思?

Source$<是第一个先决条件的名称(即smth_foo_depends_on

  

为什么我们在$@中输出一些东西,据我所知,这是给脚本的参数列表?我们为什么要修改它?

Source:在makefile语言中,$@是当前目标的名称(即foo)。不要将它与位置参数的shell列表混淆。配方行echo $< | bar >> $@扩展为:

echo smth_foo_depends_on | bar >> foo