我有一个棘手的问题,需要以以下内容格式批量生成 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>
它需要循环出两个值。
- 日期(按日递增)
- 编号(从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
(用一个 0 填充)。它通过打印文件末尾未更改的内容来结束。
示例运行:
$ ./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>