我正在尝试执行以下替换操作,但没有成功
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或其他)没有任何偏好。有任何想法吗?谢谢。
答案 0 :(得分:1)
您不需要在make语法中使用反斜杠对引号进行转义:引号并不特殊。因此,您的\"
的替代项永远不会匹配,因为字符串\"
中没有两个字符的字符串"/dev/ttyPS1"
。
尝试:
a = "/dev/ttyPS1"
b = $(patsubst "%",\""%"\",$(a))
c = $(subst ",\"",$(a))
$(info $(a) $(b) $(c))