쉘 루프는 날짜와 값을 HTML로 출력합니다.

쉘 루프는 날짜와 값을 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>

관련 정보