Makefileの1行をSTDINに置き換える

Makefileの1行をSTDINに置き換える

Makefileターゲットは次の責任を負う必要があります。

  • $ perl Markdown.pl src/index.mdインポート(htmlにマークダウン)出力
  • CONTENTsrc / template.htmlファイルから生成されたコンテンツに似たこの文字列に行を置き換えます。 template.htmlには、この行の他の行はありません。

これを達成するためのエレガントな方法は何ですか?

ベストアンサー1

arcegeが言ったように、実際のソースファイルを変更しないでください。とにかく使いやすいですawk

target:
    awk '{if($$0=="CONTENT"){system("perl Markdown.pl src/index.md")}else{print}}' src/template.html > build/template.html

この行をよりきれいに見せるために、このawkコードをスクリプトに入れることができます。 (これを行うに$$0は変更してください$0。そうしないと、makefileはそれを解釈するのでこれが必要です。)

target:
    awk -f convert.awk src/template.html > build/template.html

おすすめ記事