从 4.14自动生成先决条件部分GNU make manual
%.d: %.c
@set -e; rm -f $@; \
$(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
$$$$
是什么意思?
另外,在一本书中,我正在读取一个make文件中的食谱:
$(AWK) '... \
{ \
print "Killing " $$3; \
system( "$(KILL) -f " $$1 ) \
}'
因为它是一个awk程序所以引用了整个事情。我替换了配方的其余部分...为什么它使用$$
而不是$
?
任何提示都表示赞赏。感谢。
答案 0 :(得分:4)
$对shell和make都有意义,而awk。如果你想要非make语义,你必须加倍以避免make语义。
第二个例子很简单:它只是$1
和$3
的awk语义。
第一个是$$的shell语义。 $$是:
$$
Process ID (PID) of the script itself. [5] The $$ variable often finds use in scripts to
construct "unique" temp file names (see Example 31-6, Example 16-31,
and Example 15-27). This is usually simpler than invoking mktemp.
获取快速报价。