makefile $ shell变量sed扩展不正确?

时间:2016-04-06 03:38:46

标签: sed makefile

我在尝试捕获makefile变量中sed命令的输出时遇到问题。

JS_SRC:=$(shell sed -n 's@.*src="\([^"]*\.js\).*@\1@p' index.html)

哪个给了我

sed: -e expression #1, char 34: unknown option to S' `

我一直试图逃避事情之类的事情,但我总是给出错误。 逃跑的所有变种我都跑了,终端运行良好。 makefile如何调用shell命令? /usr/bin/sh -c "cmd?"或其他不同的东西?

插入的东西但我不知道是什么。

1 个答案:

答案 0 :(得分:1)

JS_SRC:=$(shell sed -n "s/.*src=\"\\([^\"]*\\.js\\).*/\\1/p" index.html)

似乎有效。我通过运行make -d并查看它正在创建的过程来解决这个问题。

令人困惑的是,它在sed参数中与' vs "做了不同的事情。 "/bin/sh -c "args"一起运行,因此我可以调整转义以获得我需要在那里出现的内容。使用'似乎直接调用sed。

有一堆逃逸,我认为这是不必要的(我不需要在sed表达式中插入变量,但它将它发送到我理解的shell。所以它必须这样做!: )