Makefile で文字列置換を実行したいと考えています。次のような文字列リテラルでこれを簡単に行うことができます。
foo:
echo $(subst /,-,"hello/world")
これにより、期待される結果が得られます。
hello-world
しかし、変数の使用に切り替えると、置換が固執するようには見えません。
foo:
x="hello/world" ; \
echo $(subst /,-,$$x)
スラッシュをダッシュに置き換える代わりに、元の文字列が出力されます。誰かがここで何が起こっているのか説明できますか? 変数を明示的に文字列リテラルなどに変換する必要がありますか?
アップデート:
MadScientist の回答に基づく修正 - これにより、変更された文字列を変数として参照できるようになります。
foo:
x="hello/world" ; \
y=`echo $$x | tr / -` ; \
echo $$y
しかし、echo $$y
これの代わりにもっと便利なものがあるかもしれません.