Programowanie w Shellu (index)


Programowanie w Shellu (12) - generowanie raportów

ZADANIE 12.1

W katalogu domowym stworzyć katalogi raporty i raporty/baza. W katalogu raporty/baza stworzyć kilka plików dla fikcyjnych osób w formacie:


# Nazwa pliku: ADAMCZYK.KAROL
NAZWISKO=Adamczyk
IMIE=Karol
URODZINY=1983-06-12

ZADANIE 12.2

W katalogu raporty stworzyć plik make_db.sh postaci:


#!/bin/bash
#
# make_db.sh
#
# Skrypt tworzacy plik DB, w którym pola w wierszu rozdzielone
# sa znakiem tabulacji.

BAZADIR="baza"
PLIK_DB="osoby.db"

rm -f ${PLIK_DB}

for I in ${BAZADIR}/*
do
    . $I
# Tymczasowo wpisujemy srednik, ktory zamienimy na tabulacje.
    echo "${NAZWISKO};${IMIE1};${URODZINY}"
done | tr ";" "\t" >> ${PLIK_DB}

Za pomocą polecenia ./make_db.sh wygenerować plik DB z danymi o osobach.

ZADANIE 12.3

W katalogu raporty stworzyć plik make_html.sh postaci:


#!/bin/bash
#
# make_html.sh
#
# Skrypt tworzacy plik HTML z tabela.

BAZADIR="baza"
PLIK_HTML="osoby.html"
TITLE="Lista uczestników obozu"

rm -f ${PLIK_HTML}

# Poczatek strony.
echo "<html> <head>" >> ${PLIK_HTML}
echo "<title>${TITLE}</title>" >> ${PLIK_HTML}
echo "</head> <body>" >>  ${PLIK_HTML}
echo "<h1>${TITLE}</h1>" >> ${PLIK_HTML}

# Generuje tabele.
cat << EOF >> ${PLIK_HTML}
<table border=2>
<tr>
<td>Nazwisko</td>
<td>Imię</td>
<td>Data urodzin</td>
</tr>
EOF

for I in ${BAZADIR}/*
do
    . $I
    echo "<tr>"
    echo "<td>${NAZWISKO}</td>"
    echo "<td>${IMIE}</td>"
    echo "<td>${URODZINY}</td>"
    echo "</tr>"

# Mamy tu przekierowanie wyjscia z petli for.
done >>  ${PLIK_HTML}

# Koniec tabeli.
echo "</table> </body> </html>" >> ${PLIK_HTML}

Za pomocą polecenia ./make_html.sh wygenerować plik HTML z listą osób.

ZADANIE 12.4

W katalogu raporty stworzyć plik db2html.sh postaci:


#!/bin/bash
#
# db2html.sh
#
# Skrypt tworzacy plik HTML z tabela na bazie pliku DB.

PLIK_DB="osoby.db"
PLIK_HTML="osoby.html"
TITLE="Lista uczestników obozu"

rm -f ${PLIK_HTML}

cat << EOF >>  ${PLIK_HTML}
<html>
<head>
<title>${TITLE}</title>
</head>
<body>
<h1>${TITLE}</h1>

<table border=2>
<tr>
<td>Nazwisko</td>
<td>Imię</td>
<td>Data urodzin</td>
</tr>
EOF

cat ${PLIK_DB} | \
while read NAZWISKO IMIE URODZINY
do
    echo "<tr>"
    echo "<td>${NAZWISKO}</td>"
    echo "<td>${IMIE}</td>"
    echo "<td>${URODZINY}</td>"
    echo "</tr>"
done >>  ${PLIK_HTML}

# Koniec tabeli i pliku HTML.
cat << EOF >> ${PLIK_HTML}
</table>
</body>
</html>
EOF

Za pomocą polecenia ./db2html.sh z pliku DB wygenerować plik HTML z listą osób.

RAPORTY W SHELLU

Jeżeli dane użytkownika przechowywane są w plikach tekstowych o ustalonym formacie, wtedy skrypty Shella mogą wyszukiwać potrzebną informację i generować raporty w różnych formatach:

Wygodne do przetwarzania w shellu są między innymi:


Programowanie w Shellu (index)