我正在使用一个Bash脚本动态生成config.mk
文件,并将其用于Makefile。该文件是通过以下方法构建的:
cat > config.mk <<CFG
SOMEVAR := $value_from_bash1
ANOTHER := $value_from_bash2
CFG
如何确保生成的文件实际上包含了$value_from_bash*
的内容,而不是被展开/解释的内容?我可能需要将$
转义为$$
,将\
转义为\\
,但是否还有其他需要转义的字符?也许有一种特殊的字面赋值方式我没有听说过?
空格似乎也会引起问题:
$ ls -1
a b
a
$ cat Makefile
f := a b
default_target:
echo "$(firstword $(wildcard ${f}))"
$ make
a
如果我使用f := a\ b
,它可以工作(使用引号如f := 'a b'
也不行,makefile只会将其视为常规字符)。