gpt4 book ai didi

regex - 从 GNU make 中运行 grep

转载 作者:行者123 更新时间:2023-12-02 05:26:42 26 4
gpt4 key购买 nike

我需要使用 grep 查找文本 'ifeq ($(Param1)'。我尝试将搜索结果分配给 make 变量。问题是单引号不会转义 make 中的文本所以当我尝试时:

GrepResult:= $(shell grep 'ifeq ($$(Param1)' TextFile)

我得到:

Makefile:214: *** unterminated call to function `shell': missing `)'.  Stop.

$ 可以用 $$ 转义,但是如何在 make 中转义括号?谢谢。

注意:$GrepResult 用于 $(error) 函数,而不是规则命令。

最佳答案

诀窍是通过 Make grep 走私特殊字符。

GrepResult := ${shell grep 'ifeq (\$$(Param1)' TextFile}

Make 将 $$ 转换为 $,然后 grep 将\$ 转换为 $。另请注意,此赋值使用大括号“{}”,而不是括号“()”,以免与匹配结果混淆。 (可能有更强大的方法来处理字符串,但没关系。)

使用结果时,请使用单引号:

all:    @echo '$(GrepResult)'

这也通过 GNUMake 3.81 进行了测试。

编辑:这也适用于 $(error...):

    $(error '$(GrepResult)')

关于regex - 从 GNU make 中运行 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com