Shell 循环将日期和数值输出到 HTML

Shell 循环将日期和数值输出到 HTML

我有一个棘手的问题,需要以以下内容格式批量生成 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>

相关内容