我有以下代码片段,无法弄清楚为什么它不起作用:
contactID
输出:
test-%:
# this works
case $* in a) echo A;; b) echo B;; esac
# this doesn't
$(eval MY_VAR := \
$(shell case $* in a) echo A;; b) echo B;; esac ))
echo $(MY_VAR)
我怀疑我需要转义一些字符,但我不知道哪个字符。我尝试使用\)修复了vim中突出显示的语法,但是仍然无法正常工作。
答案 0 :(得分:1)
您不能使用case
的shell快捷方式,因为$(eval …)
需要匹配的括号,因此您可以省略左括号。相反,您需要编写以下代码:
$(eval MY_VAR := \
$(shell case $* in (a) echo A;; (b) echo B;; esac ))
($(eval …)
,即使嵌套在这样的配方中,也仍将被解析为顶层makefile片段,但这也许就是您想要的。