为什么makefile shell的结果与shell中的结果不一样?

Wil*_*mKF 0 shell makefile gnu-make

使用GNU makefile内容:

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

$(error $(SVNVERSION_NUMBER))
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

Makefile:3: *** svnversion, version 1.6.2 (r37639).  Stop.
Run Code Online (Sandbox Code Playgroud)

但是,如果我键入shell:

svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/'
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

1.6.2
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Pet*_*des 7

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