首页 > 解决方案 > 在 makefile 中将“/dev/ttyPS1”替换为 \""/dev/ttyPS1\""

问题描述

我正在尝试执行此替换但没有任何成功,

a="/dev/ttyPS1"
b=$(patsubst \"%\",\\\"\"%\\"\",$(a))  
c=$(subst \",\\\"\",$(a))
$(info $(a) $(b) $(c))

输出 :

$ make
"/dev/ttyPS1" "/dev/ttyPS1"   "/dev/ttyPS1"

期望的输出:

$ make
"/dev/ttyPS1" \""/dev/ttyPS1\""   \""/dev/ttyPS1\""

我必须对转义序列做一些愚蠢的事情,因为它似乎根本没有改变......我对如何到达那里没有任何偏好(patsubst、subst 或其他)。有任何想法吗?谢谢。

标签: makefile

解决方案


您不需要在 make 语法中使用反斜杠转义引号:引号不是特殊的。因此,您的 subst\"永远不会匹配,因为 string 中没有两个字符\"的字符串"/dev/ttyPS1"

尝试:

a = "/dev/ttyPS1"
b = $(patsubst "%",\""%"\",$(a))  
c = $(subst ",\"",$(a))

$(info $(a) $(b) $(c))

推荐阅读