我在尝试捕获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?"
或其他不同的东西?
插入的东西但我不知道是什么。
答案 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。所以它必须这样做!: )