次のコンテンツ形式でHTMLを一括生成する必要がある難しい問題があります。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<div>
<time>2020-10-01 07:46:13</time>
<p>text01</p>
</div>
<div>
<time>2020-10-02 07:46:13</time>
<p>text02</p>
</div>
more...
</body>
</html>
2つの値を繰り返す必要があります。
- 日付(日別増分)
- 番号(01から増加)
約100個程度を生成する必要がありますが、どうすればよいですか?
助けてくれてありがとう!
答え1
次のようなものが役に立ちます。
#!/bin/bash
cat << EOF
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
EOF
for ((i = 1; i <= 100; ++i)); do
cat << EOF
<div>
<time>$(date +"%Y-%m-%d %H:%M:%S" -d "+${i} days")</time>
<p>$(printf "test%02d" "${i}")</p>
</div>
EOF
done
cat << EOF
</body>
</html>
EOF
まず、ファイルの上部に変更されていない内容を印刷します。次に1..100から繰り返されます。ループを通過するたびにブロックが作成されますdiv
。時間は現在の時間にi
日数を加えた値と、test
その後に段落i
(ゼロで埋められる)が続きます。ファイルの最後に変更されていない内容を印刷して終了します。
実行例:
$ ./ex.sh
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<div>
<time>2020-10-17 22:57:00</time>
<p>test01</p>
</div>
<div>
<time>2020-10-18 22:57:00</time>
<p>test02</p>
</div>
...
<div>
<time>2021-01-23 21:57:01</time>
<p>test99</p>
</div>
<div>
<time>2021-01-24 21:57:01</time>
<p>test100</p>
</div>
</body>
</html>