2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

readコマンドなどを使って、txtファイルを読み込み、HTMLファイルを作成する!要はshellscriptを使って流し込みをする。

Posted at

Web制作などをすると、
流し込みという、原稿を渡されて、原稿のテキストをHTMLに成形?する作業あるじゃないですか?

今思えば、流し込む原稿の内容HTMLのテンプレート的なが揃ってたら(内容が決まっていたら)、shellscriptで一瞬じゃないか。

と思い試してみました。:angel_tone2:

shellscript

create_html.sh
#!/bin/bash

createHtmlFile()
{
  local textFile="$1"

  # パターンにマッチした部分を取り除いた値に展開する、パラメータ展開
  # ここでは、後方一致のパターンにパス名展開を使い
  # パターンにマッチした拡張子を取り除いて、展開し、
  # 末尾にhtmlの拡張子を追加し、htmlFile変数へ代入。
  local htmlFile="${textFile%%.*}.html"

  # 空のhtmlDrafts配列を作成
  local htmlDrafts=()
  local htmlTemplate=

  while read -r textLine
  do
    # readコマンドで1行分textFile変数(テキストファイル)から、
    # 文字列を読み取って、
    # その内容をtextLine変数へ代入し、
    # textLine変数を配列の要素として、
    # htmlDrafts配列に追加する。
    htmlDrafts+=("$textLine")
  done < "$textFile"

  # ヒアドキュメントを使いシェルスクリプト本体に
  # 配列の要素を参照したテキスト(HTMLの雛形)を埋め込む、
  # 埋め込んだテキストをcatコマンドの標準入力として利用し、
  # コマンド置き換えを実行して、catコマンドの出力を文字列に展開し
  # htmlTemplate変数へ代入。
  htmlTemplate=$(cat << END
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>${htmlDrafts[0]}</title>
</head>
<body>
  <h1>${htmlDrafts[1]}</h1>
  <p>${htmlDrafts[2]}</p>
</body>
</html>
END
)
  # シェルのリダイレクト機能を使って、
  # ptintfコマンドの標準出力先をhtmlFileへ出力し、
  # HTMLファイルを作成する。
  printf '%s\n' "$htmlTemplate" > "$htmlFile"
}

for i in "$@"
do
  createHtmlFile "$i"
done

使い方

カーレントディレクトリに以下のファイルがあるとします。

  • create_html.sh
  • sample.txt
$ ./create_html.sh sample.txt

これで、OKです。

実行後↓のように表示されるかと思います。

$ ls
create_html.sh sample.html    sample.txt

sample.txtの内容は以下のような内容です。
sample001.png

shellscriptで作成したHTMLファイルです。
sample002.png

終わりに

今回は、とてもシンプルにしましたが、もう少し改良しようかと思います。
よかったら改良して使ってみてください!:clap:
https://github.com/masanorifunaki/create_html

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?