我正在尝试扩展Makefile中的一个变量:
LIST = 1,3-6,9
因此,"3- 6“将扩展为一个介于3和6之间的数字列表。
我在终端中尝试了以下命令:
echo 1,3-6,9 | perl -pe 's/(\d+)-(\d+)/join(",", $1..$2)/ge'
它确实产生了准确的输出。然后,我在Makefile中尝试了以下方法:
LIST_NEW = $(shell printf $(shell echo ${LIST} | perl -pe 's/(\d+)-(\d+)/join(",", $1..$2)/ge'))
然后,它会显示如下错误消息:
syntax error at -e line 1, near ", .."
我该如何解决这个问题?
发布于 2021-01-27 06:40:48
你必须转义任何你不想被make扩展的$
,比如$$
。
另外,为什么要运行两次$(shell ...)
?
这将会起作用:
LIST_NEW = $(shell echo ${LIST} | perl -pe 's/(\d+)-(\d+)/join(",", $$1..$$2)/ge')
在这里,如果LIST
的值对于给定的make调用是恒定的,那么您可以考虑使用:=
。
https://stackoverflow.com/questions/65910166
复制相似问题