3

私はこれを持っています:

#!/bin/bash

# Open up the document
read -d '' html <<- EOF
<!DOCTYPE html>
<html>
  <head>
    <title>...</title>
    <meta name="...">
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
EOF

#Overwrite the old file with a new one
echo "$html" > index.html

# Convert markdown to HTML
`cat README.md | marked --gfm >> index.html`

# Put the converted markdown into the HTML
read -d '' html <<- EOF
  </body>
</html>
EOF

# Save the file
echo "$html" >> index.html

しかし、私が欲しいのは、代わりに1回の書き込みです。基本的に、最初はEOF私も持っていて、タグ</html></body>の間に次のように置き換えたいと思います。<body>{{CONTENT}}cat README.md | marked --gfm

read -d '' html <<- EOF
    <!DOCTYPE html>
    <html>
      <head>
        <title>...</title>
        <meta name="...">
        <link rel="stylesheet" type="text/css" href="style.css" />
      </head>
      <body>
      {{CONTENT}}
      </body>
    </html>
    EOF

コマンドを何度も試しましたが、sed何か問題があると思います。検索するファイルの内容にスラッシュが含まれていると問題があると読みました。sedここでコマンドを実装するにはどうすればよいですか?

4

3 に答える 3

3

catこれは、への1回の呼び出し、コマンド置換を使用して、真ん中にread-meを挿入することで実行できると思います。

cat << EOF > index.html
<!DOCTYPE html>
<html>
  <head>
    <title>...</title>
    <meta name="...">
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
  $(marked --gfm < README.md)
  </body>
</html>
EOF

もう1つのオプションはprintf、{{CONTENT}}プレースホルダーを単純なフォーマット文字列に置き換えて使用することです。

read -d '' -r template <<EOF
<!DOCTYPE html>
<html>
<head>
<title>...</title>
<meta name="...">
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
%s
</body>
</html>
EOF

printf "$template" "$(marked --gfm < README.md)"
于 2012-08-20T02:27:29.623 に答える
1

あなたはそうしません。

md="$(marked --gfm <README.md)"
> index.html
while read html
do
  echo "${html/{{CONTENT}}/$md}" >> index.html
done <<- EOF
    <!DOCTYPE html>
    <html>
      <head>
        <title>...</title>
        <meta name="...">
        <link rel="stylesheet" type="text/css" href="style.css" />
      </head>
      <body>
      {{CONTENT}}
      </body>
    </html>
    EOF
于 2012-08-20T01:20:50.400 に答える
0

これはあなたのために働くかもしれません(GNU sed):

sed '/<body>/!b;n;s/.*/&/e' - <<\EOF > index.html
<!DOCTYPE html>
<html>
  <head>
    <title>...</title>
    <meta name="...">
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
  marked --gfm < README.md
  </body>
</html>
EOF
于 2012-08-20T06:15:45.513 に答える