2016-04-06 6 views
1

sedコマンドの出力をmakefile変数に取り込む際に問題が発生しました。私に与え

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

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

私は物事などを脱出しようとしてきたが、常にそのエラーを与えています。 私はエスケープのすべてのバリエーションを実行し、端末から正常に実行します。 makefileはどのようにシェルコマンドを呼び出しますか? /usr/bin/sh -c "cmd?"または何か異なる?

補間されているものの、何もわからない。

答えて

1

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

表示されます。私はmake -dを実行し、それが作成していたプロセスを見てこれを理解しました。

困ったことは、sed引数に'"の違いがあったことです。 "/bin/sh -c "args"で実行されていますので、私はエスケープしてそこに現われなければならないものを得ることができました。 'を使用すると、sedが直接呼び出されたようです。

エスケープのヒープ全体がありますが、私が想像することは不要です(私はsed式で変数を補間する必要はありませんが、それはシェルが理解できるシェルに送信します)。

関連する問題