Programowanie w Shellu (index)
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
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.
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.
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.
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: