2

長い間潜んでいるが、初めてのポスター。Makefileの質問があり、質問を投稿する場所がわかりませんでしたが、適切なカテゴリを選択したことを願っています。

バックボーンテンプレートを使用していて、HTMLを複数のファイルに分割しました。インデックスファイルにはこの{template}テキストが含まれています。Makefileを使用して複数のHTMLファイルからテキストをロードし、{template}変数をそれらのファイルのコンテンツに置き換えることを計画しています。

Makefile に含まれるもの:

$(eval data := $(shell cat "file.html"))
sed -i '' 's/$({template})/$(data)/' index.html

sedコードは魅力的に機能し、テキストを強制するとデータ値に置き換えられますが、猫が壊れて私に。を与えますError 1

私は両方を試しました:

$(eval data := $(shell grep -nr file.html))
$(eval data := $(shell cat "file.html"))

通常のキャラクター以外に到達すると、両方とも失敗します。htmlデータを変数にロードする方法をまだ理解していません。

なにか提案を?

4

1 に答える 1

0

/文字があなたtemplateとあなたのに存在する可能性があるためdata、これはあなたの sed コマンドを壊します。

これを処理するには、次の 2 つの方法があります。

  1. 文字列に存在しないことが確実な別の正規表現区切り文字を使用してください。
  2. /あなたのキャラクターをエスケープします。

エスケープは、次のコマンドで簡単に実行できます。

sed -e 's:/:\\/:g'
于 2015-02-03T11:44:01.070 に答える