Makefileで使用されるbashスクリプトでconfig.mk
を動的に生成しています。ファイルは以下で構成されます:
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はそれを通常の文字として扱います)