다음 콘텐츠 형식으로 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>