2016-04-06 84 views
1

我在嘗試捕獲makefile變量中sed命令的輸出時遇到了問題。

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

這給了我

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

我一直在試圖逃跑的東西之類的,但我始終考慮到的錯誤。 轉義的所有變化我已經運行,從終端運行良好。 makefile如何調用shell命令? /usr/bin/sh -c "cmd?"或不同的東西?

被插入的東西,但我不知道是什麼。

回答

1

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

似乎工作。我通過運行make -d並且看到它正在創建的過程來了解這一點。

令人困惑的是,它在sed參數中與' vs "做了不同的事情。 "/bin/sh -c "args"一起運行,所以我能夠調整轉義以獲得我需要在那裏出現的東西。使用'似乎直接調用sed。我不需要在sed表達式中插入變量,但它將它發送到我理解的shell中,所以它必須做到這一點!:)