为什么makefile shell的结果不同于在shell中执行相同的操作?

时间:2009-12-08 04:02:41

标签: shell makefile gnu-make

GNU makefile内容为:

SVNVERSION_NUMBER := $(shell svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/')

$(error $(SVNVERSION_NUMBER))

我得到的结果是:

Makefile:3: *** svnversion, version 1.6.2 (r37639).  Stop.

但是,如果我输入shell,则在shell中显示:

svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/'

我得到了结果:

1.6.2

显然,我的shell语法没有按照我的想法进行,但我不明白为什么。

感谢。

1 个答案:

答案 0 :(得分:7)

$特别是make字符串。 $$用于perl命令中的文字美元符号。