我想在我的 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
是更有用的东西。